【发布时间】:2019-04-17 18:56:50
【问题描述】:
是否可以通过 IOC 暴露不同类中的类公共属性。我正在创建一个接口实例,但我无法访问类的公共属性。我正在使用 Unity.WebApi 来解决依赖关系。
TransactionService 类
public class TransactionService : ITransactionService
{
private readonly IMRepository _mRepository;
private readonly IFService _fGateway;
public TransactionService(IMbaRepository mbaRepository, IFpnService fpnService)
{
_mRepository = mRepository;
_fGateway = fService;
}
private List<Transaction> SearchTransacionsByUser(FUser objFUser)
{
foreach (var item in something)
{
//can't use _fGateway to set properties because Interface
// don't implement them
_fGateway.OID = objFUser.OID.ToString();
_fGateway.Amount = objFUser.Amount;
_fGateway.Search(criteria);
}
}
}
FService 类
public class FService : IFpService
{
public string _OID { get; set; }
public decimal _Amount{ get; set; }
public TransactionResponse Search(string criteria)
{
TransactionOperationInput _input;
_input = new TransactionOperationInput()
{
Criteria = _criteria,
OID = _OID,
Amount = _Amount
};
// search transactions
}
}
【问题讨论】:
-
您能否更新界面以包含缺失的属性?这看起来像是一个设计问题。
-
否则需要强制转换接口。然而,这是一个糟糕的设计,因为它与实现问题紧密耦合,这与注入抽象的原因背道而驰。..
-
我对 _input = new TransactionOperationInput() 没有任何控制权,因为它是 dll 文件的一部分。
-
我指的是
IFService接口
标签: c# oop asp.net-web-api interface inversion-of-control