2010-01-15 10 views

cevap

7

Tüm genel statik yöntemleri alan ve doğru ad ve dönüş türüne sahip bir yöntemi denetleyen bir uzantı yöntemi kullanırdım.

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; 
    } 
} 
+3

Yup. Kapalı dönüşüm operatörleri sadece sözdizimsel şekerdir. CLR için özel bir anlamı yoktur ve VB.NET onları bile (ya da en azından geçmişte değil) anlamıyor. Bu gerçek bir oyuncu değil ve bu yüzden gerçekten atanamaz; Tek cevap, örtülü operatörü kontrol etmektir. – Aaronaught

0
if(... || TypeDescriptor.GetConverter(f).CanConvertTo("".GetType())) 
+0

Burada sorun, HERŞEYİ diziye dönüştürüyor gibi görünüyor. Örtük olmayan sınıflar dahil. Sınıfları bir dizeye dönüştürdüğü gerçeği, kodumu mahvediyor. –

+0

Tanım gereği, TÜM nesneler ToString() yöntemini uygular. – Curt