如何让StructureMap返回所请求类型的特定实例

时间:2008-12-16 17:32:08

标签: c# structuremap

我想在structuremap中为类型注册一个对象的特定实例,我该怎么做?

例如,

当我这样做时:

var myObj = ObjectFactory.GetInstance(typeof(MyAbstractClass));

我希望它返回一个先前构造的具体类,我创建如下:

var myClass = new MyConcreteClass("bla"); // MyConcreteClass : MyAbstractClass

所以

myObj == myClass

如何使用structuremap注册myClass以促进这一点?

由于

安德鲁

3 个答案:

答案 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);
});