2008-12-16 82 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); 
}); 
相關問題