小编Eus*_*ton的帖子

使用StructureMap和NET MVC 2的TryGetInstance问题

我在NET MVC 2应用程序中使用StructurMap(刚刚升级到2.6.1)和Jimmy Bogard的智能模型绑定器.我也正在调整Dominic Pettifer的技术,以便您可以使用智能模型绑定器将DI注入到viewModel中,以获得需要重新填充选择列表的回发方案!

我知之甚少StructureMap,我得到的一个问题是structuremap 202 no instance defined errorviewModel与无参数构造函数的绑定.

所以在我的IOCMOdelBinder class尝试使用TryGetInstance()而不是GetInstance()前者如果与modelType不匹配则返回null.基本上,如果它找不到已注册的实例,则回退到默认的模型绑定器.

我的覆盖CreateModel类看起来像这样:

protected override object CreateModel(ControllerContext controllerContext,
ModelBindingContext bindingContext, Type modelType)
 {

   var myInstance = ObjectFactory.TryGetInstance(modelType);

   if (myInstance != null)
   {
     return myInstance;
   }
   else
   {
     return base.CreateModel(controllerContext, bindingContext, modelType);
   }
}
Run Code Online (Sandbox Code Playgroud)

我拿出了ObjectFactory.GetInstance(modelType);我希望它们以相同的方式工作的行,但TryGetInstance返回null并GetInstance返回正确的对象,所以它肯定在注册表中.我可以使用GetInstance但必须将它包装在try catch中,这有点不那么优雅!有什么建议吗?

.net structuremap asp.net-mvc inversion-of-control

3
推荐指数
1
解决办法
1926
查看次数