我做了这样的配置:
var container = new Container(x =>
{
x.For<IEngine>().Use<V6Engine>();
x.For<ICar>().Use<HondaCar>();
}
);
Run Code Online (Sandbox Code Playgroud)
然后在我的mvc控制器动作中我做了:
ICar car = ObjectFactory.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)
我应该以某种方式使用Container或ObjectFactory设置我的容器吗?它没有解决,所以我在ac#console应用程序中测试了一些东西,如果我这样做的话它会起作用:
ICar car = container.GetInstance<ICar>();
Run Code Online (Sandbox Code Playgroud)
但这仅在容器位于本地范围内时才有效,而在Web应用程序中,由于事物在global.asax.cs中连接起来并不明显
小智 0
我的配置如下
全局.asax
ObjectFactory.Initialize(action =>
{
action.For<ISomething>().Use<Something>;
});
Run Code Online (Sandbox Code Playgroud)
然后是其他地方。
ObjectFactory.GetInstance<ISomething>();
Run Code Online (Sandbox Code Playgroud)
但这可能不是唯一的方法。另外我认为您可能正在寻找的是
Scan(scanner =>
{
scanner.AssemblyContainingType(....);
scanner.AddAllTypesOf(....);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8836 次 |
| 最近记录: |