2010-03-25 5 views
7

Wenn zwei Typen angegeben werden (Typ a, Typ b), gibt es einen "netten" Weg, herauszufinden, wenn diese beiden verglichen, summiert usw. werden können?Wie kann man prüfen, ob zwei Typen verglichen, summiert usw. werden können?

Ich dachte, wenn die Typen IConvertible implementieren, könnte man beides umwandeln, sagen wir dezimal und eine "Convert.ToDecimal(a) > Convert.ToDecimal(b)" durchführen?

Ich baue einen Ausdruck-Evaluator und möchte in der Lage sein, mit jeder Art von Objekt zu arbeiten und muss daher wissen, ob ein Typ mit einem anderen Typ verglichen werden kann (er muss NICHT auf beiden Seiten gleich sein) B. double > int)

+0

Hier ist meine Frage zu dem gleichen Problem. http://stackoverflow.com/questions/2093230/how-to-check-that-i-can-sum-values-of-given-type –

Antwort

1

Ob Sie Typen hinzufügen können, hängt von den Regeln Ihrer Programmiersprache ab. Speziell implizite Konvertierungen und Überladungsauflösung.

Seit .net 3.5 gibt es die Klasse "Expression" und verwandte Hilfsklassen, die das tun können. Solution for overloaded operator constraint in .NET generics

Verwandte Themen