反映op_implicit表

cat*_*ier 1 .net c# reflection

我目前正在寻找构建动态类型转换器,

例如,我可以很容易地做到:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后

typeof(Tester).GetMethods()
Run Code Online (Sandbox Code Playgroud)

将返回我隐式转换MethodInfo.

但是,如果我这样做:

typeof(int).GetMethods()
Run Code Online (Sandbox Code Playgroud)

它不会返回任何op_implicit

我已经看到你可以在这里看到这个表,但我想知道是否有可能从框架本身反映它.

请注意,这不是一个真正的阻塞问题,如果不可能,我会手动从表中添加转换器,但我显然希望动态构建(更干净,更不容易出错).

Jon*_*eet 6

原始类型的运算符没有在框架中定义 - 它们是CLI本身的一部分; 他们基本上都有自己的特殊指示.没有涉及IL,没有方法,所以没有什么MethodInfo可以参考.

System.Decimal但是,如果你看一下,你会发现运算符在框架本身中"只是"实现了.

(在一个类似的方式,string不声明一个+操作者;的用途+C#转换为调用内string.Concat.)