2011-04-05 128 views
0

我是StructureMap新手。以下問題的任何指導表示讚賞。謝謝!StructureMap注入父母/子女關係

我有喜歡的一些代碼:

public interface IFoo 
{ 
    IBar Child { get; } 
    void SayIt(); 
} 

public class Foo: IFoo 
{ 
    public IBar Child {get; set;} 
    public Foo(string message) {...} 
    public void SayIt() {...} 
} 

public interface IBar 
{ 
    IFoo Parent {get;} 
} 

public class Bar: IBar 
{ 
    private IFoo parent; 
    public IFoo Parent { get {return parent;} } 
    public Bar(IFoo parent) 
    { 
     this.parent = parent; 
    } 

} 

我構建的IFoo使用如下的ObjectFactory

ObjectFactory.Configure(x => 
      { 
       var foo = x.For<IFoo>().Use<Foo>(); 
       //x.For<IBar>().Use<Bar>().Ctor<IFoo>().Is(foo); 

       x.SetAllProperties(c => 
        { 
         c.OfType<IBar>(); 

        } 
       ); 
      } 
      ); 

我構建foo的對象:

var foo = ObjectFactory.With<string>("Hello world").GetInstance<IFoo>(); 

然而,我將IFoo的Child屬性配置爲IBar與父級的實例有困難屬性指向我創建的實例,例如以「Hello World」作爲消息的那個。我怎樣才能做到這一點?謝謝!

+0

這不是一件容易的事情,因爲它通常不會使用IoC工具。你可能會考慮用你試圖解決的實際問題來重新解釋問題(或者創建一個新問題),從而讓你認爲你需要注入服務之間的父子關係。 – 2011-04-08 18:16:08

回答

0

你不能這樣做,因爲StructureMap會拋出一個雙向依賴異常。大多數看起來像這樣的對象圖不屬於容器,因爲它們是數據對象。例如,xml文檔對象。