虚拟代码:
public object Addition(object a, object b)
{
var type = a.GetType();
var op = type.GetMethod("op_Addition", BindingFlags.Static | BindingFlags.Public);
return op.Invoke(null, new object[] { a, b });
}
这个方法抱怨int / float / double,找不到这些方法(op_Addition)。
那么如何构建一般的添加方法呢?
答案 0 :(得分:8)
是的,它们不是像这样的成员存在的自定义运算符 - 而是有内置的IL指令。
(对于字符串连接,几乎为true,除非C#编译器构建对string.Concat
的调用。)
如果您使用的是C#4和.NET 4,最简单的方法是使用动态类型:
public dynamic Addition(dynamic x, dynamic y)
{
return x + y;
}
对于早期版本,您需要特殊情况下某些类型:(
目前尚不清楚你的背景是什么,但你可能会发现Marc Gravell的article on generic operators很有意思。