The question Convert a text fraction to a decimal arose and though I’d post a solution to it using a class with the implicit operator. Admittedly I didn’t do a lot of testing on this, but it should handle a great deal of situations asis. If you need more flexibility, feel free to extend it yourself (and post your modification here so I can update any edge cases).
With that said, here’s the class:

{

public Double Result

{

get { return this.result; }

private set { this.result = value; }

}

private Double result;


public FractionalNumber(String input)

{

this.Result = this.Parse(input);

}


private Double Parse(String input)

{

input = (input ?? String.Empty).Trim();

if (String.IsNullOrEmpty(input))

{

throw new ArgumentNullException("input");

}


// standard decimal number (e.g. 1.125)

if (input.IndexOf('.') != 1  (input.IndexOf(' ') == 1 && input.IndexOf('/') == 1 && input.IndexOf('\\') == 1))

{

Double result;

if (Double.TryParse(input, out result))

{

return result;

}

}


String[] parts = input.Split(new[] { ' ', '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);


// standoff fractional (e.g. 7/8)

if (input.IndexOf(' ') == 1 && parts.Length == 2)

{

Double num, den;

if (Double.TryParse(parts[0], out num) && Double.TryParse(parts[1], out den))

{

return num / den;

}

}


// Number and fraction (e.g. 2 1/2)

if (parts.Length == 3)

{

Double whole, num, den;

if (Double.TryParse(parts[0], out whole) && Double.TryParse(parts[1], out num) && Double.TryParse(parts[2], out den))

{

return whole + (num / den);

}

}


// Bogus / unable to parse

return Double.NaN;

}


public override string ToString()

{

return this.Result.ToString();

}


public static implicit operator Double(FractionalNumber number)

{

return number.Result;

}

}
Now your integration should resemble something like:
Double fractional = new FractionalNumber("3 1/2"); // = 3.5