我正在使用Ninject 2和Asp.Net MVC 3.我有以下模块。
public class ServiceModule : NinjectModule
{
public override void Load()
{
//I need to get the 'configHelper' from Ninject Container.
IConfigHelper configHelper = ResolveConfigHelperHere();
Bind<IMyService>().To<MyServiceImpl>().WithConstructorArgument("myArg", configHelper.MyProperty);
}
}
我们如何获得已在Ninject模块中绑定的'IConfigHelper'实例?
答案 0 :(得分:17)
var helper = Kernel.Get<IConfigHelper>();
Bind<IMyService>().To<MyServiceImpl>().WithConstructorArgument(
"myArg",
helper.MyProperty
);
这是一个完整的例子:
public interface IConfigHelper
{
string MyProperty { get; set; }
}
public class ConfigHelper : IConfigHelper
{
public string MyProperty { get; set; }
}
public interface IMyService
{
}
public class MyServiceImpl : IMyService
{
public MyServiceImpl(string myArg)
{
}
}
public class HelperModule : NinjectModule
{
public override void Load()
{
Bind<IConfigHelper>()
.To<ConfigHelper>()
.WithPropertyValue("MyProperty", "foo");
}
}
public class ServiceModule : NinjectModule
{
public override void Load()
{
var helper = Kernel.Get<IConfigHelper>();
Bind<IMyService>()
.To<MyServiceImpl>()
.WithConstructorArgument("myArg", helper.MyProperty);
}
}
class Program
{
static void Main()
{
IKernel kernel = new StandardKernel(
new HelperModule(),
new ServiceModule()
);
var service = kernel.Get<IMyService>();
}
}