在构建接口IDummy的实例时,如何连接structuremap以注入属性。
假设我有一个名为Dummy的具体类,它实现了IDummy接口。
Dummy类有两个属性,第一个叫DataContext实现IDataContext,第二个属性只是一个名为MyDummyString的基本字符串..
然后第二个IDummy实现名为DummyConcrete2,只有一个属性MyDummyString(如上所述)。
如何在Structure Map中连接它,因此当我请求具体的DummyConcrete2时,默认情况下会注入属性。谷歌搜索了很多,但还没有弄明白。 StructureMap文档似乎是几个旧版本(许多已弃用的方法)..
任何能够阐明这一点的评论都会很棒!
谢谢!
答案 0 :(得分:1)
正如Mark在他的评论中提到的那样,你通常不会直接依赖具体对象。但您可以配置StructureMap如何构造具体对象。以下是使用最新配置DSL的示例。
public interface IFoo { }
public class Foo : IFoo { }
public class Foo2 : IFoo { }
public interface IDummy
{
IFoo Foo { get; set; }
}
public class Dummy : IDummy
{
public IFoo Foo { get; set; }
}
public class Dummy2 : IDummy
{
public IFoo Foo { get; set; }
}
[TestFixture]
public class configuring_concrete_types
{
[Test]
public void should_use_configured_setter()
{
var container = new Container(cfg =>
{
cfg.ForConcreteType<Dummy>().Configure.Setter<IFoo>().Is(new Foo());
cfg.ForConcreteType<Dummy2>().Configure.Setter<IFoo>().Is(new Foo2());
});
container.GetInstance<Dummy>().Foo.ShouldBeOfType<Foo>();
container.GetInstance<Dummy2>().Foo.ShouldBeOfType<Foo2>();
}
}
我希望这会让你朝着正确的方向前进。