gpt4 book ai didi

具有多个泛型参数的 C# 方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:52 26 4
gpt4 key购买 nike

我正在尝试构建一个通用方法和四个实现 IDetail 的类。每个类都有一个实现 ITaxes 的类的集合。我想构建一个通用方法,允许我访问每个类的集合。

是这样的:

public void UpdateCollection<T,I>(T Detail,Taxes TaxesList ) where T:IDetail where I:Itaxes
{
foreach( Taxes tax in TaxesList)
{
Detail.I.Add(tax);
}
}

我想在类型T 中访问类型I 的属性。我怎样才能做到这一点?有可能的?我需要为每个类编写一个方法吗?

最佳答案

理想情况下,你会修改你的 IDetail界面包含 ITaxes 列表对象作为该界面的一部分。如果您希望公开公开的命名属性对每个细节具有不同的名称,则可以使用显式接口(interface)实现。

如果这不可能,或者由于其他原因没有意义,那么您最好的选择可能是让此方法接受 Func<T, I>此方法的参数。然后,用户可以提供一种方法,让您可以从每个 T 中提取所需的列表。对象:

public void UpdateCollection<T, I>(T Detail, Taxes TaxesList, Func<T, I> taxSelector)
where T : IDetail
where I : Itaxes
{
I taxList = taxSelector(Detail);
foreach (Taxes tax in TaxesList)
{
taxList.Add(tax);
}
}

调用者可以使用 lambda 为该对象定义适当的属性。

关于具有多个泛型参数的 C# 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19364448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com