2013-03-25 91 views
1

我有下面的類聲明:爲什麼我的Unity IoC不能爲我創建課程?

public class SeedData 
{ 
    private IUow _uow; 

    public SeedData(IUow uow) 
    { 
     _uow = uow; 
    } 

} 

,並在引導程序:

container.RegisterType<IUow, Uow>(); 

我的代碼試圖聲明一個實例是這樣的:

var a = new SampleData.EF.SeedData(); 

但是我得到的消息:

Error 
'SampleData.EF.SeedData' does not contain a constructor that takes 0 arguments 

有人可以解釋我可以做些什麼來使我的IoC爲我創建一個Uow實例。我是不是在用 這個錯誤的方式?

+0

您需要使用IoC容器... – 2013-03-25 07:41:28

+0

但是,如何才能訪問該容器? – Alan2 2013-03-25 08:23:45

回答

4

獲得你的對象你也應該把SeedData倒入容器:

container.RegisterType<SeedData>(); 

然後調用:

var a = container.Resolve<SeedData>(); 

而不是創造直接由new。通過這種方式,容器將自動爲您注入IUow

+0

我試過這個,但它無法解析容器。 – Alan2 2013-03-25 08:54:26

+0

你是什麼意思「無法解析容器」? – 2013-03-25 08:56:49

+0

[必需閱讀](http://msdn.microsoft.com/en-us/library/ff664762(v = pandp.50).aspx#ResolveObjects_CustomTypes)? – 2013-03-25 08:58:39

0

當您添加公共構造函數時,您將覆蓋沒有參數的默認構造函數。 嘗試添加公共構造函數沒有參數,可以在那裏你會從容器

+0

這忽略了一點,如何使用IoC容器來構造一個具有依賴關係的對象。 – 2013-03-25 08:57:45

相關問題