2010-03-25 4 views
7

se vengono forniti due tipi (Tipo a, Tipo b), esiste un modo "bello" per trovare se questi due possono essere confrontati, sommati ecc.?Come verificare se due tipi possono essere confrontati, sommati ecc.?

Stavo pensando se i tipi implementano IConvertible, uno potrebbe convertire sia per consentire diciamo decimale ed eseguire un "Convert.ToDecimal(a) > Convert.ToDecimal(b)"?

Sto costruendo un valutatore di espressioni e voglio essere in grado di lavorare con qualsiasi tipo di oggetto e quindi ho bisogno di sapere se un tipo può essere paragonato ad un altro tipo (NON DEVE essere lo stesso tipo su entrambi i lati ad esempio double > int)

+0

Ecco la mia domanda sullo stesso problema. http://stackoverflow.com/questions/2093230/how-to-check-that-i-can-sum-values-of-given-type –

risposta

1

Se è possibile aggiungere a tipi dipende dalle regole di bind del proprio linguaggio di programmazione. Conversioni implicitamente implicite e risoluzione di sovraccarico.

Dato che .net 3.5 esiste la classe "Expression" e le relative classi helper che possono farlo. Solution for overloaded operator constraint in .NET generics