2011-09-02 58 views
3

我已经打开了一个问题on CodePlex但都没有收到任何答复。MEFContrib.MVC3:导出控制器与基类

基本上,我有一个基础控制器,所有的控制器都继承自我的控制器。当我创建一个新的MVC3项目时,将我的控制器放在另一个程序集中,并将MEFContrib.MVC3添加到项目中,一切都很好。当我让任何控制器从我的基类继承,他们不能再被发现。

我对MEFContrib不太了解,不知道究竟是什么突破,但我试图用ExportAttribute来装饰我的控制器,那也没有奏效。

所有这一切都是不同的装配比主MVC项目:

public class MyBaseController : Controller 
{ 
    ... 
} 

// This controller cannot be found. 
public class HomeController : MyBaseController 
{ 
    public ActionResult Index() 
    { 
     // Do Stuff 
     return View(); 
    } 
} 

// This controller can be found. 
public class HomeController : Controller 
{ 
    // yada, yada, yada... 
} 

编辑:

counsellorben是完全正确的。我有依赖没有正确标记出口,所以控制器不能正确组成。我逐步浏览了我的每个依赖关系,逐步了解他们自己的依赖关系,发现了我错过的几个。

+0

请指定导入到MyController类中的任何依赖项。最可能的问题是MyController类中存在依赖关系问题,并且这会导致与从MyController继承的任何控制器相同的问题。 – counsellorben

+0

@counsellorben - 去看看,看看它是什么。 –

+0

@counsellorben - 我能够创建一个基类和依赖关系的示例项目,它工作得很好。如果你创建一个答案,我会接受它,因为这似乎是我的问题。试图将Ninject的应用程序移植到MEFContrib的IoC。似乎要找出依赖关系会有点麻烦。顺便说一下,有没有办法查看哪些依赖关系导致MEF无法构建适当的部分? –

回答

1

最有可能的问题是,有一个在你的MyController类的依赖问题。这将导致任何控制器从MyController继承问题。

请参阅this answer你可以用它来尝试和诊断您的问题在于一些示例代码。

+0

非常感谢。 –

0

我认为你需要用InheritedExport属性来装饰。

+0

谢谢,Nate。实际上是因为我错过了一个依赖 - 只是一个愚蠢的错误。 –