2011-04-05 81 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文档对象。