私が書いたリフレクションを使用する私のコードで
if (f.FieldType.IsAssignableFrom("".GetType()))
文字列への暗黙的な変換を持つクラスがあります。ただし、上記のifステートメントはそれをキャッチしません。リフレクション/上記の if ステートメントを暗黙的な文字列変換で文字列とクラスをキャッチするにはどうすればよいですか? 特に文字列と私が知っている各クラスの代わりに?
私が書いたリフレクションを使用する私のコードで
if (f.FieldType.IsAssignableFrom("".GetType()))
文字列への暗黙的な変換を持つクラスがあります。ただし、上記のifステートメントはそれをキャッチしません。リフレクション/上記の if ステートメントを暗黙的な文字列変換で文字列とクラスをキャッチするにはどうすればよいですか? 特に文字列と私が知っている各クラスの代わりに?
すべての public static メソッドを取得し、正しい名前と戻り値の型を持つメソッドをチェックする拡張メソッドを使用します。
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;
}
}
if(... || TypeDescriptor.GetConverter(f).CanConvertTo("".GetType()))