我目前正在通过将模型对象注入到我的“ViewModelProduct”对象的构造函数中来在我的 WebApi 中实现 ViewModel,如下所示:
public class ViewModelProduct
{
private IProduct _product;
private int _ID;
private string _name;
public ViewModelProduct(IProduct product)
{
_product = product;
ID = _product.ID;
Name = _product.Name;
}
public int ID
{
set { _ID = _product.ID; }
get { return _ID; }
}
public string Name
{
set { _name = value; }
get { return _name;}
}
public string Description
{
set { _product.Description = value; }
get { return _product.Description; }
}
在控制器内——在我的例子中,我想创建一个“ViewModelProduct”实例的“ProductController”。我想尽可能减少紧密耦合。
我通过使用 BootStrapper 类中的 Unity 将一个“IFacade”对象注入到我的控制器的构造函数中。
这里真正的问题是我目前有一个静态方法,它只是返回一个新的“ViewModelProduct”对象实例,我将模型发送到该对象以在其构造函数中进行设置,如图所示。这是不好的做法吗?我想不出我怎么能用 Unity 创建一个实例,因为我不知道运行时之前的模型是什么
public List<ViewModelProduct> GetProducts()
{
var V2Ops = _facade.GetOperatorV2();
var productList = V2Ops.GetProducts();
List<ViewModelProduct> listObjects = new List<ViewModelProduct>();
foreach (var product in productList)
{
//*****Setting a new instance from a static method.*****
var viewModel = CreateNewViewModelV2.CreateViewModel(product);
listObjects.Add(viewModel);
}
return listObjects;
}
返回一个新的“ViewModelProduct”实例的静态类:
public static ViewModelProduct CreateViewModel(IProduct passedProductModel)
{
return new ViewModelProduct(passedProductModel);
}