属性可以实现接口吗

本文关键字:接口 实现 属性 | 更新日期: 2023-09-27 18:26:33

我正在使用Unity Container进行拦截所以我试图添加一个[Trace]属性,例如

公共类TraceAttribute:HandlerAttribute

然后在代码中,我可以这样使用它:

public class MyClass
{
    [Trace]
    public void DoSomething()
    {
        ...
    }
}

以下是我的问题/目标:我不希望追踪属性与统一拦截绑定。如果我以后更改DI容器,或者想要实现我自己的容器,等等,我想把它换掉,就像我们对接口所做的那样。

类似于:

公共接口TraceAttribute:ITraceAttribute

然后有具体的实现?这可能吗?

我们面临的挑战之一是,无论在哪里使用Trace属性,我都必须安装Unity程序集,我希望避免这种情况。

谢谢!

属性可以实现接口吗

In C#属性需要是直接或间接从类System.Attribute派生的类。这意味着使用标准工具时不能将接口用作属性。

对于您的场景,您可以创建一个属性,该属性可以从Unity创建所需的实例。如果您正在将其用于MVC过滤器,您可以在此处查看现在的场景来设置它。对于其他情况,它可能更复杂,但您仍然可以使用某种服务定位器来实现它。