2008-12-16 103 views
2

我想为结构映射中的类型注册一个对象的特定实例,我该怎么做?如何获取StructureMap以返回所请求类型的特定实例

例如,

当我这样做:

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

我想它返回先前混凝土建造一流的,我喜欢这创造:

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

所以

myObj == myClass 

如何使用结构映射注册myClass以实现此目的?

感谢

安德鲁

回答

6

我相信你会初始化

 ObjectFactory.Initialize(x => 
     { 
      x.ForRequestedType<MyAbstractClass>().TheDefault.IsThis(myClass); 
     }); 

哪里myClass的是要返回的对象的实例做到这一点你。

+1

即时得到:类型实例MyConcreteClass无法插入式MyAbstractClass。任何想法? – 2008-12-16 23:00:39

+0

你有没有得到这个工作?我只是回头看看你的回复。在我们的应用程序中,我没有遇到任何问题。你有编译错误还是初始化错误?您可能会发布试图获取该实例的代码。 – Jab 2008-12-29 13:59:19

4

您可以通过

ObjectFactory.Inject(typeof(MyAbstractClass), myClass); 
1

在StructureMap 3种方法已经改变注入的具体实例作为默认设置,该代码现在工作:

var emailService = new EmailService(ConfigurationManager.AppSettings[mykey]); 

ObjectFactory.Initialize(x => 
{     
    x.For<IEmailService>().Use(emailService); 
});