gpt4 book ai didi

c# - 如何为 .net 中的类型获取已定义的运算符

转载 作者:太空狗 更新时间:2023-10-29 21:00:22 26 4
gpt4 key购买 nike

我正在尝试获取特定类型的已定义运算符列表,以便查看可以对该类型应用哪种操作。

例如,类型Guid 支持操作==!=

因此,如果用户想要对 Guid 类型应用 <= 操作,我可以在异常发生之前处理这种情况。

或者如果我有操作符列表,我可以强制用户只使用列表中的操作。

运算符在对象浏览器中可见,因此可能有一种方法可以通过反射访问它们,但我找不到那种方法。

我们将不胜感激。

最佳答案

使用 Type.GetMethods 获取方法,然后使用 MethodInfo.IsSpecialName 来发现运算符、转换等。这是一个示例:

using System;
using System.Reflection;

public class Foo
{
public static Foo operator +(Foo x, Foo y)
{
return new Foo();
}

public static implicit operator string(Foo x)
{
return "";
}
}

public class Example
{

public static void Main()
{
foreach (MethodInfo method in typeof(Foo).GetMethods(BindingFlags.Static | BindingFlags.Public))
{
if (method.IsSpecialName && method.Name.StartsWith("op_"))
{
Console.WriteLine(method.Name);
}
}
}
}

关于c# - 如何为 .net 中的类型获取已定义的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1412757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com