Search code examples
c#.netgenericstypeconverter

Generic conversion function doesn't seem to work with Guids


I have the following code:

public static T ParameterFetchValue<T>(string parameterKey)
{
    Parameter result = null;

    result = ParameterRepository.FetchParameter(parameterKey);

    return (T)Convert.ChangeType(result.CurrentValue, typeof(T), CultureInfo.InvariantCulture);  
}

The type of result.CurrentValue is string. I would like to be able to convert it to Guid but I keep getting the error:

Invalid cast from System.String to System.Guid

This works perfectly with primitive data types.
Is there any way to make this work for non-primitive data types?


Solution

  • How about:

    T t = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(text);
    

    Works fine for Guid and most other types.