2016-04-25 147 views
2

我正在通過依賴注入。我有一個ASP.NET MVC項目,其中模型被命名爲Customers:ASP.NET MVC - 依賴注入

public class Customers 
{ 
    public ID get; set; 
    private Customer customer 

    public Customers() 
    { 
     customer = new Customer(); 
    } 
} 

現在我想添加類以消除上述類中的依賴關係。例如,Customer是Customers類的依賴項。 客戶應該依賴抽象。我創建了一個名爲IStorageCustomer

public interface IStorageCustomer 
{ 
} 

現在我改變了客戶類的接口(或抽象類)下面的以下內容:

public class Customers 
{ 
    public ID get; set; 
    private IStorageCustomer customer; 

    public Customers(IStorageCustomer customer) 
    { 
     this.customer = customer; 
    } 
} 

我需要知道,如果依賴已經在上面的類被淘汰。我還需要做什麼?請幫忙。任何幫助將不勝感激。謝謝。

+0

做了'客戶'和'Customer'類應用程序中的作用是什麼補充的嗎? – Steven

+0

你的角色是什麼意思?你可以給我一個例子嗎? – dkostraa

+0

這些課程是做什麼的? 「客戶」是一個實體嗎? 'Customers'是否允許從數據庫加載實體? – Steven

回答

0

您可以安裝Ninject MVC。 (請注意每個版本的MVC都有不同的版本)

這是一個Nuget,它爲您管理依賴注入。

爲了讓Ninject注入正確的類,您應該在NinjectWebCommon文件中進行設置。

private static void RegisterServices(IKernel kernel) 
{ 
    //all your bindings will be configured here 
    kerenl.Bind<IStorageCustomer>().To<Costumer>(); //if you want Customer instances to be injected everywhere you expect an IStorageCustomer 
} 

還爲您希望注入實例的類留下默認構造函數。

0

而不是客戶,我會將其重命名爲Person。現在這裏是我迄今爲止的變化。這也包括我剛添加的類。唯一的問題是客戶模型類中的人員無法訪問,因爲它是私有的,也是它的類型。

public class Customers 
{ 
    public int ID { get; set; } 
    private IStoragePerson person; 

    public Customers() 
    { 
     this.person = LocateCustomer.GetCustomer(); 
    } 
} 

public class Person : IStoragePerson 
{ 
    public string person{ get; set; } 
} 

不知道該怎麼對IStoragePerson

public interface IStoragePerson 
{ 
} 

public class LocateCustomer 
{ 
    public static IStoragePerson person{ get; set; } 
    public static IStoragePerson GetCustomer() 
    { 
     if(person == null) 
     { 
      person = new Person(); 
     } 
     return person; 
    } 
}