如何访问泛型中的属性
本文关键字:泛型 属性 访问 何访问 | 更新日期: 2023-09-27 18:02:33
我有一个始终具有.Balance
属性的基类。我需要遍历类列表并将余额添加在一起。这一切都很好,但是有两个派生类,Assets
和Liabilities
也可以通过。如何在不重载GetTotalBalance
的情况下使其工作?更重要的是,我如何要求<T>
从类AccountBase
派生,这将保证包含.Balance
属性?这可能吗?
private float GetTotalBalance<T>(List<T> accountList) where T : class
{
float totalAssets = 0.0f;
for (int assetIndex = 0; assetIndex < accountList.Count; assetIndex++)
{
totalAssets += accountList[assetIndex].Balance;
}
return totalAssets;
}
您正在寻找通用约束:
where T : YourBaseClass
或者,使函数非泛型,并接受IEnumerable<YourBaseClass>
(因为接口是协变的)。
此时,将函数更改为
return accounts.Sum(a => a.Balance);