使用MEF做IoC容器,使用的是MefDependencySolver。
自定义了一个AuroraAuthorizeAttribute,AuroraAuthorizeAttribute : ActionFilterAttribute
在这个Filter中Import:
[Import]
public IAccountSiteContract AccountContract { get; set; }
注:这个东西用在Controller中是可以的,
运行的时候,AccountContract为Null。
另一个问题是要早Controller中使用Import,那么这个Controller必须有Export,有没有办法避免为每一个Controller增加Export特性呢?
我一开始是使用Ninject,因为属性注入需要特性,想不到MEF连构造函数注入也需要特性,
最后我选择了Autofac,属性注入和构造函数注入都不要特性~~~干干净净~O yeah~
lz 问题解决了吗? 现在遇到和lz 同样的问题。
http://msdn.microsoft.com/zh-cn/library/hh708870.aspx
4.5支持 4.0不支持 但我的是4.5遇到同样问题
不知道LZ是否解决问题了?
一群喷子,拿出来解决方案捏?
没有高手能解决这个问题?
加段代码就可以像mvc 一样使用了
GlobalFilters.Filters.ToList().ForEach(filter =>
{
string contractName = AttributedModelServices.GetContractName(filter.Instance.GetType());
object obj = solver.Container.GetExportedValueOrDefault<object>(contractName);
if (obj != null)
{
GlobalFilters.Filters.Remove(filter.Instance);
GlobalFilters.Filters.Add(obj);
}
});
有办法么?