2010-03-25 11 views
7

jeśli podano dwa rodzaje (Typ a, Typ b), czy istnieje "miły" sposób, aby znaleźć , jeśli te dwie można porównać, zsumować itp?Jak sprawdzić, czy można porównać dwa typy, zsumować itp.?

Zastanawiam się, czy typy obsługują IConvertible, można skonwertować zarówno, aby powiedzieć dziesiętnie i wykonać "Convert.ToDecimal(a) > Convert.ToDecimal(b)"?

Buduję narzędzie do oceny ekspresji i chcę móc pracować z dowolnym obiektem i dlatego muszę wiedzieć, czy typ można porównać do innego typu (NIE musi być tego samego typu po obu stronach np. double > int)

+0

Oto moje pytanie dotyczące tego samego problemu. http://stackoverflow.com/questions/2093230/how-to-check-that-i-can-sum-values-of-given-type –

Odpowiedz

1

Zasięg, który można dodać do typów, zależy od obowiązujących reguł języka programowania. W szczególności niejawne konwersje i rozdzielczość przeciążenia.

Od .net 3.5 istnieje klasa "Wyrażenie" i powiązane klasy pomocników, które mogą to zrobić. Solution for overloaded operator constraint in .NET generics