Asp.net mvc 3 MEFContrib.MVC3:导出具有基类的控制器
我提出了一个问题,但根本没有收到任何答复 基本上,我有一个基本控制器,我的所有控制器都从中继承。当我创建一个新的MVC3项目,将我的控制器放入另一个程序集中,并将MEFContrib.MVC3添加到该项目中时,一切都很好。当我从我的基类继承任何控制器时,它们就再也找不到了 我对MEFContrib不太熟悉,不知道到底是什么在破坏,但我尝试用Asp.net mvc 3 MEFContrib.MVC3:导出具有基类的控制器,asp.net-mvc-3,controller,export,mef,Asp.net Mvc 3,Controller,Export,Mef,我提出了一个问题,但根本没有收到任何答复 基本上,我有一个基本控制器,我的所有控制器都从中继承。当我创建一个新的MVC3项目,将我的控制器放入另一个程序集中,并将MEFContrib.MVC3添加到该项目中时,一切都很好。当我从我的基类继承任何控制器时,它们就再也找不到了 我对MEFContrib不太熟悉,不知道到底是什么在破坏,但我尝试用ExportAttributes装饰我的控制器,但这也没有起作用 所有这些都与主MVC项目不同: public class MyBaseController
ExportAttribute
s装饰我的控制器,但这也没有起作用
所有这些都与主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...
}
编辑:
奥本顾问完全正确。我的依赖项没有正确标记为导出,因此无法正确组合控制器。我仔细检查了我的每个依赖项,仔细检查了它们自己的依赖项,发现了我遗漏的几个依赖项。最可能的问题是您的
MyController
类中存在依赖项问题。这将导致从MyController继承的任何控制器出现问题
请参阅一些示例代码,您可以使用它们来尝试诊断问题所在。我认为您需要使用
InheritedExport
属性进行修饰。请指定导入MyController类的任何依赖项。最可能的问题是MyController类中存在依赖项问题,这会导致从MyController继承的任何控制器出现同样的问题。@Councellorben-我要看一看,看看是否是这样的情况。@Councellorben-我能够创建一个带有基类和依赖项的示例项目,它工作得很好。如果你创造一个答案,我会接受,因为这似乎是我的问题。正在尝试将应用程序从Ninject移植到MEFContrib的IoC。看来要找出依赖关系还需要一些工作。顺便问一下,有没有办法知道是哪些依赖性导致MEF无法组成正确的部分?谢谢,内特。事实上,这是因为我错过了一个依赖关系——只是一个愚蠢的错误。