好像是第三次在写代码的时候遇到这个坑了,在利用反射调用Convert.ChangeType进行类型推算自动转换的时候,总是无法完成string到guid的转换,并且报错
An exception of type 'System.InvalidCastException' occurred in mscorlib.dll but was not handled in user code Additional information: Invalid cast from 'System.String' to 'System.Guid'.
解决方法便是对Guid的类型对一个单独的处理,通过Guid.Parse,对于其他类型,继续使用Convert.ChangeType
public static object ConvertToType(string value, Type targetType)
{
try
{
Type underlyingType = Nullable.GetUnderlyingType(targetType);
if (underlyingType != null)
{
if (string.IsNullOrEmpty(value))
{
return null;
}
}
else
{
underlyingType = targetType;
}
switch (underlyingType.Name)
{
case "Guid":
return Guid.Parse(value);
default:
return Convert.ChangeType(value, underlyingType);
}
}
catch
{
return null;
}
}
Leave a Reply
You must be logged in to post a comment.