介紹依賴注入到DTO
我使用ASP.Net MVC3。我的控制器與服務層交談,服務層與使用實體框架的數據訪問層進行交談。 我得到一個使用實體框架的特定實體。這個實體被轉換成DTO。然後我將這個DTO傳遞給一個MVC控制器。事情是這樣的:
僞代碼:
// This is inside my Service Layer
var entity = DataAccess.GetById(id);
var dto = createDtoWithValuesFrom(entity);
return dto; // Return dto to MVC controller
在這個DTO我想用的依賴,以例如計算器。比方說,我的DTO是這樣的:
public class Customer
{
private ICalculator Calculator;
public class Customer(ICalculator calculator)
{
Calculator = calculator;
}
public string Name { get; set; }
public decimal Discount
{
get
{
return Calculator.Discount();
}
}
}
問題
如何實例化我的DTO,並讓Autofac注入計算器? 我能想到的辦法做到這一點:
var calculator = DependencyResolver.Current.GetService<ICalculator>;
var dto = new DTO(calculator);
但我不知道這是否是做的最好的方法,因爲它聞起來的ServiceLocator,我讀過它沒有曏者優先使用它。
爲什麼不使用計算器作爲翻譯到DTO的一部分? – s1mm0t
一旦你開始暴露對象方法,我不認爲它是一個DTO,甚至是間接的。我同意s1mm0t,只是在構建DTO時設置它的值 – Jason