我目前正在寻找构建动态类型转换器,
例如,我可以轻松做到:
public struct Tester
{
public int Hello;
public static implicit operator int(Tester d)
{
return d.Hello;
}
public static implicit operator float(Tester d)
{
return d.Hello;
}
}
然后
typeof(Tester).GetMethods()
将返回我隐式转换 MethodInfo。
但是,如果我这样做:
typeof(int).GetMethods()
它不会返回任何 op_implicit
我看到你可以看到表here ,但我想知道是否可以从框架本身反射(reflect)它。
请注意,这并不是真正的阻塞问题,如果不可能,我将手动从表中添加转换器,但我显然更喜欢动态构建(更干净且不易出错)。
最佳答案
基本类型的操作符没有在框架中定义——它们是 CLI 本身的一部分;基本上,他们有自己的特殊说明。不涉及 IL,没有方法,所以 MethodInfo
引用。
如果你看System.Decimal
,但是,您会发现运算符是在框架本身中“仅”实现的。
(以稍微类似的方式,string
不声明 +
运算符;在 C# 中使用 +
被转换为对 string.Concat
的调用。)
关于c# - 反射(reflect) op_implicit 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176415/