4
我使用此扩展方法来转换项目中的对象。但它无法转换为GUID
,因为它没有实现IConvertible
接口,但对于转换,我总是不得不使用new Guid(fooobject)
,但我希望我可以使用此方法将对象转换为GUID
。任何想法如何使我们能够灵活使用GUID
也。扩展方法:如何使它与GUID一起工作
扩展方法是
public static T ToType<T>(this object val, T alt) where T : struct, IConvertible
{
try
{
return (T)Convert.ChangeType(val, typeof(T));
}
catch
{
return alt;
}
}
虽然GUID确实有[自己的TypeConverter](http://msdn.microsoft.com/en-us/library/system.componentmodel.guidconverter),您可以随时进行特殊情况检查'typeof(T)''。 ASPX)。您可能需要将'val'转换为'string'。否则,请参阅页面上的示例。 – 2012-08-06 07:03:13
是'TypeConverter'不存在GUID,因为它是我猜的值类型。我们需要明确地取消装箱,将其转换为GUID。这就是为什么我想要使用扩展方法做到这一点... – 2012-08-06 07:06:34
我很确定它仍然会工作..如果'val'是*不* GUID值,那么你需要转换它。如果它是一个GUID,你可以用'typeof(T)'检查来判断,并直接进行转换。 – 2012-08-06 07:07:49