public interface IInterface1
{
}
public interface IInterface2
{
}
public class MyClass : IInterface1, IInterface2
{
}
...
ObjectFactory.Initialize(x =>
{
x.For<IInterface1>().Singleton().Use<MyClass>();
x.For<IInterface2>().Singleton().Use<MyClass>();
});
var x = ObjectFactory.GetInstance<IInterface1>();
var y = ObjectFactory.GetInstance<IInterface2>();
Run Code Online (Sandbox Code Playgroud)
我用上面的代码得到了两个不同的MyClass实例.我该怎么办?
Jos*_*gan 53
您可以使用Forward <,>()注册告诉StructureMap使用不同类型的分辨率来解析类型.这应该做你期望的:
ObjectFactory.Initialize(x =>
{
x.For<IInterface1>().Singleton().Use<MyClass>();
x.Forward<IInterface1, IInterface2>();
});
Run Code Online (Sandbox Code Playgroud)
Chr*_*sic 13
我将注册MyClass本身,然后将其从上下文中拉出各个接口的Use语句.
ForSingletonOf<MyClass>().Use<MyClass>();
For<IInterface1>().Use(ctx => ctx.GetInstance<MyClass>());
For<IInterface2>().Use(ctx => ctx.GetInstance<MyClass>());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14812 次 |
| 最近记录: |