public class abcAttribute : Attribute { /// <summary> /// 服务接口 /// </summary> private readonly Ia _Ia; public abcAttribute(Ia Ia) { _Ia = Ia; } }
要用的时候
[abcAttribute(EngineContext.Current.Resolve<Ia>())]
报错是特性实参必须是特性形参类型的常量表达式、typeof 表达式或数组创建表达式 。
这个服务接口有可能其实现类的构造函数相当复杂,又牵扯到别的service。所以无参数构造函数不大可能。
怎么办?
不要以参数的方式传递值就行了嘛,比如用配置文件,中间变量之类的…方法多种多样。
最后用无参数的构造。在构造里面再调用AUTOFAC出需要的实例
直接去官网看看,不过建议不要使用这个侵入式的方式注入,可以使用autofac配置