如何使用从同一个接口继承的多个对象

本文关键字:对象 继承 接口 何使用 同一个 | 更新日期: 2023-09-27 18:11:15

当使用StructureMap时,我希望类A被注入Bar,类B被注入Baz。

我如何配置/设置与StructureMap的关系?

public class Bar : IFoo {}
public class Baz : IFoo {}
public class A
{
   private IFoo _foo;
   public A(IFoo foo)
   {
      _foo = foo; 
   }
}
public class B
{
   private IFoo _foo;
   public B(IFoo foo)
   {
      _foo = foo;
   }
}

如何使用从同一个接口继承的多个对象

根据这个答案,我认为你需要这样做:

For<IFoo>().Add<Bar>().Named("bar");
For<IFoo>().Add<Baz>().Named("baz");
For<A>()
    .Use<A>()
    .Ctor<IFoo>()
    .Named("bar");
For<B>()
    .Use<B>()
    .Ctor<IFoo>()
    .Named("baz");