我在unitofwork方法中解析一个对象,而对象依赖关系是一个IRepository。 我释放对象然后在unitofwork方法中使用另一个IRepository,它将抛出dbcontext dispos错误。我必须从DI释放对象吗?
private readonly IIocManager _iocManager;
private readonly IRepository<Bill> _billRepository;
public PayService(IIocManager iocManager,IRepository<Bill> billRepository)
{
this._iocManager = iocManager;
_billRepository = billRepository;
}
[AbpAuthorize]
public PayRestultDto SwingCard(PayDto input)
{
var itr = _iocManager.IocContainer.Resolve<ITradeOrder>(input.PayType.ToString("G"));
PayRestultDto result;
try
{
result = itr.Pay(input);
}
finally
{
_iocManager.IocContainer.Release(itr);
}
if (result != null)
{
_billRepository.Insert(result);
}
return result;
}
答案 0 :(得分:0)
您需要在匿名类型的实例中传递构造函数参数。了解它是如何为您的案件做的;
var itr = _iocManager.IocContainer.Resolve<ITradeOrder>(new { PayType = input.PayType.ToString("G") });
其中 PayType 是TradeOrder类构造函数中的参数名称。
IFoo foo = container.Resolve<IFoo>(new { Param1 = "Value1", Param2 = "Value2"});
var parameters = new Dictionary<string, object>();
parameters.Add("Param1", "Value1");
parameters.Add("Param2", "Value2");
IFoo foo = container.Resolve<IFoo>(parameters );