c# - StructureMap 创建实例

标签 c# .net inversion-of-control structuremap

我在启动时为接口(interface)配置了具体类型,但我想在运行时通过设置属性或在构造函数中设置不同的值来创建具体类型的实例。我看到的所有实例创建都知 Prop 体类型是什么,在运行时我不知 Prop 体类型。有没有办法在不知 Prop 体类型的情况下创建接口(interface)/类的具体实例?这是我看到的:

[Test]
public void DeepInstanceTest_with_SmartInstance()
{
    assertThingMatches(registry =>
    {
        registry.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>()
                .WithCtorArg("name").EqualTo("Jeremy")
                .WithCtorArg("count").EqualTo(4)
                .WithCtorArg("average").EqualTo(.333);
        });
}

或者:

var container = new  Container(x =>
{
    x.ForConcreteType<SimplePropertyTarget>().Configure
     .SetProperty(target =>
     {
         target.Name = "Max";
         target.Age = 4;
     });
});

我想做类似的事情......但不知 Prop 体类型......只有抽象类或接口(interface)(在这种情况下会有属性)。虽然配置了具体类型。

最佳答案

在 Jeremy Miller(StructureMap 的作者)的指导下找到了答案。这是他指出我的地方:

http://structuremap.sourceforge.net/RetrievingServices.htm#section5

这是我使用的示例:

IDatabaseRepository repo =
                ObjectFactory.With("server").EqualTo("servername").
                With("database").EqualTo("dbName").
                With("user").EqualTo("userName").
                With("password").EqualTo("password").
                GetInstance<IDatabaseRepository>();

关于c# - StructureMap 创建实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/583522/

相关文章:

c# - 您的 SQL 语法有错误,适用于 .net 的 mysql 连接器

c# - Resolver 或 ServiceProvider 使用 ICompositeViewEngine 所需的依赖项

c# - 如何使用 dotnet 在命令行中传递参数?

c# - 控制台应用程序的 IOC?

c# - 持续性内存困惑

c# - 从华氏度转换为摄氏度

c# - 在 WPF 中定义宽度和高度的自定义表达式

asp.net - 如何在 ASP.NET Web 窗体中使用依赖注入(inject)

c# - 使用依赖注入(inject)将字典保存在应用程序中的位置

c# - Xamarin Android图像url数组到gridview中