gpt4 book ai didi

C# Method Attribute强制要求是abstract还是static?

转载 作者:太空狗 更新时间:2023-10-30 01:08:22 24 4
gpt4 key购买 nike

这可能更像是一个设计问题,而不是“我可以这样做吗?”问题。我正在创建一个属性,其目标定义为方法。有什么方法可以限制方法的域,即目标方法必须声明为抽象、虚拟、静态等?

最终目标是扫描这些方法并在子类中实现它们——但我希望它们是抽象的。有没有更好的方法来完成对我的属性目标的这种伪限制?

最佳答案

您应该能够使用 MethodInfo.IsVirtual 过滤掉用您的属性装饰的非虚方法。和 MethodInfo.IsAbstract确定它是否是抽象的。

foreach(var assem in AppDomain.CurrentDomain.GetAssemblies())
foreach (var type in assem.GetTypes())
foreach (var mthdInfo in type.GetMethods())
{
if (mthdInfo.GetCustomAttributes(typeof(MyCustomAttribute), false) && mthdInfo.IsVirtual && !mthdInfo.IsFinal)
// This is a method you can use
}

还有一些方法可以检测您列出的其他约束,方法应该类似。

编辑:已修复以回答方法问题。

关于C# Method Attribute强制要求是abstract还是static?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588505/

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