Prüft, ob ein Typ eine implizite oder explizite Typkonvertierung in einen anderen Typ mit .NET unterstützt

8

Stellen Sie sich vor, Sie hätten zwei System.Types erhalten und möchten feststellen, ob es eine implizite oder explizite Typumwandlung von einem zum anderen gibt.

Ohne speziell nach den statischen Methoden zu suchen, gibt es eine eingebaute Methode um festzustellen, ob der Typ eine oder beide Konvertierungen unterstützt?

Ich weiß, dass dies eine kurze Frage ist, aber ich denke, das Szenario ist relativ einfach zu erklären, lassen Sie es mich wissen, wenn nicht.

Vielen Dank im Voraus, Stephen.

    
meandmycode 05.09.2010, 17:49
quelle

4 Antworten

8

Expression.Convert kann nach einem benutzerdefinierten Konvertierungsoperator suchen, aber leider wird es dies tun Werfen Sie einfach eine Ausnahme, wenn keine gefunden wird. Du könntest es so benutzen:

%Vor%     
Quartermeister 05.09.2010, 18:04
quelle
7

Ich glaube nicht. Du wirst reflection verwenden und nach den guten alten% op_Implicit und op_Explicit statischen Methoden für jeden Typ suchen.

Dies wirft die sehr interessante Frage auf: welche Auswirkungen auf die Performance haben, Reflektion (diese Antwort) oder Ausnahmen für den Kontrollfluss ( Quartermeister ) ? Ich konnte es ehrlich nicht erraten. Vielleicht möchten Sie jedes Profil erstellen und selbst herausfinden.

    
Dan Tao 05.09.2010 18:06
quelle
0

Du könntest versuchen, jeden zum anderen zu werfen und die Ausnahme zu fangen

    
hackerhasid 05.09.2010 17:57
quelle
0

Ich denke Type.IsAssignableFrom sollte Ihnen geben, was Sie brauchen.

[edit] Beachten Sie, dass dies NICHT Konvertierungsoperatoren berücksichtigt, daher ist es möglich, dass dies für Sie nicht nützlich ist. Erwähnenswert sowieso.

    
tenfour 05.09.2010 18:00
quelle

Tags und Links