是否可以通过反射调用值类型操作符?

Séb*_*SFT 13 c# reflection

因为C#运算符例如+,+ =,==是可覆盖的.它让我认为它们是一种方法,因此想知道是否有一种方法可以在Int32上使用反射来调用它们.

小智 9

那怎么样,它简单,小巧,有效:)

public T Add<T>(object x, object y)
{
    return (T)Convert.ChangeType((dynamic)x + (dynamic)y, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)


Bar*_*lly 7

是的,自定义运算符可以使用反射调用(它们具有特殊名称,例如op_Addition),但System.Int32不定义它们,因为基本的内置类型由IL操作码直接处理add,而不是方法调用.