如何访问泛型中的属性

本文关键字:泛型 属性 访问 何访问 | 更新日期: 2023-09-27 18:02:33

我有一个始终具有.Balance属性的基类。我需要遍历类列表并将余额添加在一起。这一切都很好,但是有两个派生类,AssetsLiabilities也可以通过。如何在不重载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);