为什么我的 .NET 属性不执行操作?

2023-12-11

我创建了一个简单的属性:

[AttributeUsage(AttributeTargets.Method)]
public class InitAttribute : System.Attribute
{
    public InitAttribute()
    {
        Console.WriteLine("Works!");
    }
}

我将其应用于一个简单的方法:

static class Logger
{
    public static string _severity;

    public static void Init(string severity)
    {
        _severity = severity;
    }

    [Init()]
    public static void p()
    {
        Console.WriteLine(_severity);
    }
}

发生的事情非常简单。只是,我希望该属性执行一个操作(打印“Works!”),但这不会发生。

此外,打印“Works!”当然只是为了调试目的:我想访问instance的财产_severity(检查是否是!= null,例如),但我一直读到的有关属性的所有内容(这对我来说是相当新的)都是关于访问class' 通过反射的方法或属性等。一旦我评估过_severity,如何修改装饰方法的行为(在这种情况下,引发异常“Logger 未初始化”并且不执行它)?

任何帮助表示赞赏。


如果您需要在控制进入方法时执行操作,您应该查看面向方面的编程和框架,例如后锐利。属性本身并不是为了执行任何操作而设计的。它们只是附加到 IL 程序集中可以在运行时查询的内容的一堆数据(或者元数据,如果您愿意的话)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 .NET 属性不执行操作? 的相关文章

随机推荐