C# 其中是[int,float,double]中的op_加法
虚拟代码:C# 其中是[int,float,double]中的op_加法,c#,C#,虚拟代码: 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,无法找到这些方法
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_加法)
那么如何构建一个通用的加法呢?是的,它们不是作为成员存在的自定义运算符,而是内置的IL指令 (字符串连接几乎也是如此,只是C编译器在这里构建了对
string.Concat
的调用)
如果您使用的是C#4和.NET 4,最简单的方法是使用动态类型:
public dynamic Addition(dynamic x, dynamic y)
{
return x + y;
}
对于早期版本,您需要对某些类型进行特殊处理:(
不清楚您的上下文是什么,但您可能会发现Marc Gravell很有趣。如果您有.net 4可用,您可以使用
dynamic
。谢谢@jon,我使用的是mono版本,我想我应该先使用[int,double]来浮动这些类型。