gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:18:09 25 4
gpt4 key购买 nike

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

[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!”当然只是为了调试目的:我想访问实例的属性_severity(例如检查是否为!= null),但是我的一切继续阅读属性(对我来说很新)是关于通过反射访问的方法或属性等。一旦我评估了 _severity,我该如何修 retrofit 饰方法的行为(在这种情况下,引发异常“Logger 未初始化”并且不执行它)?

感谢任何帮助。

最佳答案

如果你需要在控制进入一个方法时执行一个 Action ,你应该看看aspect-oriented programming和框架,例如 PostSharp .属性并非设计用于自行执行任何操作。它们只是附加到 IL 程序集中可在运行时查询的内容的一堆数据(或元数据,如果您愿意的话)。

关于c# - 为什么我的 .NET 属性不执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1164978/

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