我正在向我的项目引入依赖注入。我有一个对话框窗口,用作新实体或现有实体的编辑器。其ViewModel如下:
public class ContractWindowViewModel
{
private IRepository<Contract> contractRepository;
private Contract model;
private bool isNew;
public ContractWindowViewModel(Contract contract, IRepository<Contract> contractRepository)
{
if (contract == null)
throw new ArgumentNullException(nameof(contract));
if (contractRepository == null)
throw new ArgumentNullException(nameof(contractRepository));
this.contractRepository = contractRepository;
this.model = contract;
this.isNew = false;
}
public ContractWindowViewModel(IRepository<Contract> contractRepository)
{
this.contractRepository = contractRepository;
this.model = new Contract();
this.isNew = true;
}
// (...)
}
计划是注入IRepository<Contract>
。但有时我需要将Contract
传递给ViewModel(如果我想编辑现有的),或者不需要(如果我想创建新的)。如何使用Unity实现这个功能呢?
Contract
类,而不是直接与仓库通信?为什么需要知道Contract
是否为新的呢? - Yacoub MassadunityContainer.Resolve<ContractWindowViewModel>()
。 我如何通过该结构传递参数? - Spook