首页 新闻 会员 周边

关于MVC4使用MEF做IOC,Filter中无法Import和Controller必须Export的问题

0
悬赏园豆:100 [已关闭问题] 关闭于 2013-09-27 23:09

使用MEF做IoC容器,使用的是MefDependencySolver。

自定义了一个AuroraAuthorizeAttribute,AuroraAuthorizeAttribute : ActionFilterAttribute

在这个Filter中Import:

[Import]
public IAccountSiteContract AccountContract { get; set; }

注:这个东西用在Controller中是可以的,

运行的时候,AccountContract为Null。

另一个问题是要早Controller中使用Import,那么这个Controller必须有Export,有没有办法避免为每一个Controller增加Export特性呢?

Soar、毅的主页 Soar、毅 | 菜鸟二级 | 园豆:299
提问于:2013-06-10 16:46
< >
分享
所有回答(8)
0

我一开始是使用Ninject,因为属性注入需要特性,想不到MEF连构造函数注入也需要特性,

最后我选择了Autofac,属性注入和构造函数注入都不要特性~~~干干净净~O yeah~

iDream | 园豆:121 (初学一级) | 2013-06-13 10:18
0

你可以使用MEF 2.0 基于约定的编程模型,支持命名约定,可参考:

http://www.cnblogs.com/wintersun/archive/2013/01/16/2863405.html

PetterLiu | 园豆:354 (菜鸟二级) | 2013-06-15 22:13
0

lz 问题解决了吗? 现在遇到和lz 同样的问题。

http://msdn.microsoft.com/zh-cn/library/hh708870.aspx  

4.5支持 4.0不支持  但我的是4.5遇到同样问题

Karson007 | 园豆:204 (菜鸟二级) | 2013-07-24 14:20
0

不知道LZ是否解决问题了?

ForEvErNoMe | 园豆:207 (菜鸟二级) | 2014-03-02 23:31
0

一群喷子,拿出来解决方案捏?

ReleaseMan | 园豆:202 (菜鸟二级) | 2014-05-25 18:02
0

没有高手能解决这个问题?

lzxy | 园豆:27 (初学一级) | 2014-09-04 09:55
0

加段代码就可以像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);
}
});

Yorsin | 园豆:202 (菜鸟二级) | 2014-09-10 16:07
0

有办法么?

Millor | 园豆:202 (菜鸟二级) | 2014-11-10 17:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册