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.
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% 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.
Du könntest versuchen, jeden zum anderen zu werfen und die Ausnahme zu fangen
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.
Tags und Links c# reflection type-conversion