如何检查类型之间是否存在隐式转换?

Krz*_*tof 3 c# casting implicit

我需要检查类型之间是否存在隐式转换.对于内置类型,我可以创建一个字典,其中包含相应可用类型的类型和列表.但是对于自定义类型,这是不可能的,因为我不知道将检查哪些代码.有没有通用的方法来做到这一点?

谢谢.

Mik*_*Rin 8

试试这个.如果对于隐式会话的自定义类型定义方法,您将通过"op_Implicit"名称找到它

foreach (MethodInfo mi in typeof(CustomType).GetMethods())
        {
            if (mi.Name == "op_Implicit")
            {
                Console.WriteLine(mi.ReturnType.Name);
            }
        }
Run Code Online (Sandbox Code Playgroud)

  • 请注意,*内置*类型通常不包含运算符 - 它们的转换是在IL级别完成的.因此,虽然这是答案的*部分*,但有些转换通常需要进行硬编码 (2认同)