2014-10-31 64 views
1

專家你好我有類於如下因素結構配置Structuremap IOC

public class Apple:IApple 
{ 
    public IBall _ball{get;private set} 

    public Apple() 
{ 
    _ball=new Ball(); 
} 
} 

Public class Cat:ICat 
{ 
    private readonly IBall _ball; 

    Public Cat(IBall ball) 
    { 
    this._ball=ball 
    } 
} 

我如下配置我的構造圖(不顯示標準的註冊表和控制器的註冊表與控制器約定)

ObjectFactory.Container.Configure(cfg => 
     { 
      cfg.For<IApple>().Use<Apple>(); 
      cfg.For<ICat>.Use<Cat>(); 

     }); 

當我參考ICat在控制器中如下

private readonly ICat _cat; 

    public HomeController(ICat cat) 
    { 
     this._cat = cat; 
    } 

我收到錯誤「沒有默認實例已註冊,無法自動爲IBall類型確定」。

專家請提供一些建議。

回答

0

您應該註冊IBall這樣的:

cfg.For<IBall>().Use(c => ((Apple)c.GetInstance<IApple>())._ball);