gpt4 book ai didi

c# - StructureMap - 根据具体请求实例化接口(interface) x 实例的属性

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:20 25 4
gpt4 key购买 nike

在构建接口(interface) IDummy 的实例时,如何连接结构图以注入(inject)属性。

假设我有一个名为 Dummy 的具体类,它实现了接口(interface) IDummy。

Dummy 类有两个属性,第一个称为 DataContext 实现 IDataContext,第二个属性只是一个基本字符串,称为 MyDummyString..

然后是名为 DummyConcrete2 的第二个 IDummy 实现,它只有一个属性 MyDummyString(如上)。

我如何在结构图中连接它,所以当我请求混凝土 DummyConcrete2 时,默认情况下会注入(inject)属性。已经用谷歌搜索了很多,但还没有弄清楚。 StructureMap 文档似乎有几个版本很旧(很多已弃用的方法)..

任何可以阐明这一点的评论都很棒!

谢谢!

最佳答案

正如 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>();
}
}

我希望这能让您朝着正确的方向前进。

关于c# - StructureMap - 根据具体请求实例化接口(interface) x 实例的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2318892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com