我在启动时为接口(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/