Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 属性上的Autofac构造函数注入_.net_Attributes_Inversion Of Control_Autofac - Fatal编程技术网

.net 属性上的Autofac构造函数注入

.net 属性上的Autofac构造函数注入,.net,attributes,inversion-of-control,autofac,.net,Attributes,Inversion Of Control,Autofac,我有一个属性,试图使用Autofact和依赖项注入。 该属性驻留在.Net程序集中,而不是MVC中 前 属性是元数据,强调的是数据,所以不应该在属性中加入复杂的逻辑。相反,将逻辑从属性移动到使用属性的基础结构代码。顺便说一句,属性可以有构造函数参数,但可用的类型是有限的:因此不能有接口类型的参数。不要忘记,只有CLR在运行时创建属性。您不能将创建委托给您的容器。我担心这一点,我正在尝试对第三方的模板引擎进行子类化,它们的自定义宏是通过继承属性类来实现的。您可以对属性使用属性注入,而不是构造函数注

我有一个属性,试图使用Autofact和依赖项注入。 该属性驻留在.Net程序集中,而不是MVC中


属性是元数据,强调的是数据,所以不应该在属性中加入复杂的逻辑。相反,将逻辑从属性移动到使用属性的基础结构代码。顺便说一句,属性可以有构造函数参数,但可用的类型是有限的:因此不能有接口类型的参数。不要忘记,只有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);
   }
}