我想在structuremap中为类型注册一个对象的特定实例,我该怎么做?
例如,
当我这样做时:
var myObj = ObjectFactory.GetInstance(typeof(MyAbstractClass));
我希望它返回一个先前构造的具体类,我创建如下:
var myClass = new MyConcreteClass("bla"); // MyConcreteClass : MyAbstractClass
所以
myObj == myClass
如何使用structuremap注册myClass以促进这一点?
由于
安德鲁
答案 0 :(得分:6)
我相信你会在初始化
中做到这一点 ObjectFactory.Initialize(x =>
{
x.ForRequestedType<MyAbstractClass>().TheDefault.IsThis(myClass);
});
其中myClass是您要返回的对象的实例。
答案 1 :(得分:4)
您可以通过
注入具体实例作为默认实例ObjectFactory.Inject(typeof(MyAbstractClass), myClass);
答案 2 :(得分:1)
在StructureMap中,3个方法已经改变,现在这个代码可以运行了:
var emailService = new EmailService(ConfigurationManager.AppSettings[mykey]);
ObjectFactory.Initialize(x =>
{
x.For<IEmailService>().Use(emailService);
});