隐含版本的IsAssignableFrom?

时间:2010-01-15 23:39:28

标签: c# .net reflection implicit-cast

在我的代码中使用我写的反射

if (f.FieldType.IsAssignableFrom("".GetType()))

我有一个隐式转换为字符串的类。但是上面的if语句并没有抓住它。我如何使用隐式字符串转换来进行反射/上述if语句捕获字符串和类?而不是具体的字符串和我所知道的每个班级?

2 个答案:

答案 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()))