在我的代码中使用我写的反射
if (f.FieldType.IsAssignableFrom("".GetType()))
我有一个隐式转换为字符串的类。但是上面的if语句并没有抓住它。我如何使用隐式字符串转换来进行反射/上述if语句捕获字符串和类?而不是具体的字符串和我所知道的每个班级?
答案 0 :(得分:7)
我会使用一个扩展方法来获取所有公共静态方法,并检查具有正确名称和返回类型的方法。
public static class TypeExtentions
{
public static bool ImplicitlyConvertsTo(this Type type, Type destinationType)
{
if (type == destinationType)
return true;
return (from method in type.GetMethods(BindingFlags.Static |
BindingFlags.Public)
where method.Name == "op_Implicit" &&
method.ReturnType == destinationType
select method
).Count() > 0;
}
}
答案 1 :(得分:0)
if(... || TypeDescriptor.GetConverter(f).CanConvertTo("".GetType()))