C# 通过对内置类型.net 2.0的反射调用运算符

C# 通过对内置类型.net 2.0的反射调用运算符,c#,reflection,operators,clr,C#,Reflection,Operators,Clr,全部, 是否可以通过.NET2.0中内置类型的反射来调用运算符(如+,++)? 看来,你不能!当我试图访问int32上的op_增量时,未定义运算符。我读到内置类型上的运算符由编译器处理,而不是在实际类型上定义。。。请确认 否则,还有别的办法吗?我知道更高版本的C#有动态关键字,我有什么选择?不,你不能。在内置类型(bool、byte、short、int、long、float、double)上,像++和++这样的操作被映射到IL指令,例如,没有相应的操作增量方法 decimal确实允许您这样做,即

全部,

是否可以通过.NET2.0中内置类型的反射来调用运算符(如+,++)? 看来,你不能!当我试图访问int32上的op_增量时,未定义运算符。我读到内置类型上的运算符由编译器处理,而不是在实际类型上定义。。。请确认


否则,还有别的办法吗?我知道更高版本的C#有动态关键字,我有什么选择?

不,你不能。在内置类型(bool、byte、short、int、long、float、double)上,像
++
++
这样的操作被映射到IL指令,例如,没有相应的
操作增量
方法

decimal
确实允许您这样做,即使它看起来像一个内置类型
string
是一个有趣的问题,因为对
+
的调用被映射到
string.Concat
及其变体


看看这篇文章,它可能会有所帮助(由Jon Skeet和Marc Gravell撰写)

我有一个黑客解决方案,那就是检查类型,铸造它,然后执行我的操作,但这非常冗长。谢谢Sean,-我不知道我是否想在我的2.0项目中包括3.5程序集,只是为了我的代码中有一个hack。Expression类不支持3.5中的Incr、Decr,这正是我所需要的。