属性可以实现接口吗
本文关键字:接口 实现 属性 | 更新日期: 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过滤器,您可以在此处查看现在的场景来设置它。对于其他情况,它可能更复杂,但您仍然可以使用某种服务定位器来实现它。