.net 属性上的Autofac构造函数注入
我有一个属性,试图使用Autofact和依赖项注入。 该属性驻留在.Net程序集中,而不是MVC中 前.net 属性上的Autofac构造函数注入,.net,attributes,inversion-of-control,autofac,.net,Attributes,Inversion Of Control,Autofac,我有一个属性,试图使用Autofact和依赖项注入。 该属性驻留在.Net程序集中,而不是MVC中 前 属性是元数据,强调的是数据,所以不应该在属性中加入复杂的逻辑。相反,将逻辑从属性移动到使用属性的基础结构代码。顺便说一句,属性可以有构造函数参数,但可用的类型是有限的:因此不能有接口类型的参数。不要忘记,只有CLR在运行时创建属性。您不能将创建委托给您的容器。我担心这一点,我正在尝试对第三方的模板引擎进行子类化,它们的自定义宏是通过继承属性类来实现的。您可以对属性使用属性注入,而不是构造函数注
属性是元数据,强调的是数据,所以不应该在属性中加入复杂的逻辑。相反,将逻辑从属性移动到使用属性的基础结构代码。顺便说一句,属性可以有构造函数参数,但可用的类型是有限的:因此不能有接口类型的参数。不要忘记,只有CLR在运行时创建属性。您不能将创建委托给您的容器。我担心这一点,我正在尝试对第三方的模板引擎进行子类化,它们的自定义宏是通过继承属性类来实现的。您可以对属性使用属性注入,而不是构造函数注入。
public class MyAttribute : Attribute{
IMyDependentClass _myDependentClass;
public MyAttribute (IMyDependentClass myDependentClass){
// This fails because attributes can't have a
// constructor with parameters
_myDependentClass = myDependentClass;
}
private void MyAttributeEvent(object Sender, MyEventArgs e){
e.Result = _myDependentClass.MyMethod(e.Expression);
}
}