我们如何在代码中调用ninjects服务定位器?

时间:2013-08-14 22:37:12

标签: asp.net-mvc-4 dependency-injection models model-binding ninject.web.mvc

第一次使用stackoverflow + ninject(IoC)

我遇到过这样一种情况:我实施了Business Objects,其中包含了模型......即

Public Class Whatever
Implements IWhatEver
      Public Property Id as Integer
      Public Property Name as String

      Public Function SetWhatEver() as Whatever
           'Do Whatever Settings
      End Function
End Class

我正在使用ninject进行DI(依赖注入)但问题是我无法使用接口作为在动作中传递的模型,因此我尝试制作自定义模型绑定器并希望使用{{ 1}}传递给ninject和ninject为我解决它,所以我可以用元数据绑定

bindingContext.ModelType

我希望这是有道理的......我已经尝试过寻找BTW的答案,网上没有什么对我有意义,所以请你用简单的语言来解释..

修改

我正在添加下面的控制器代码,以便您更好地理解我要做的事情。我不想使用Whatever类,而是想在控制器中使用IWhatever进行处理。请看下面的例子......

Public Overrides Function BindModel(controllerContext As ControllerContext, bindingContext As ModelBindingContext) As Object

        Dim modelType = ninjectPleaseResolve(bindingContext.ModelType)
        Dim metaData = ModelMetadataProviders.Current.GetMetadataForType(Nothing, modelType)

        bindingContext.ModelMetadata = metadata

    Return MyBase.BindModel(controllerContext, bindingContext)
End Function

我希望现在有点意义..

1 个答案:

答案 0 :(得分:0)

  

问题是我无法使用接口作为传递的模型   在行动中

您不应该通过操作方法传递服务。您应该通过构造函数传递服务。这样,您的容器可以为您构建控制器和所有相关对象,这样您就不必编写自定义模型绑定器。