在c#的一个成员函数中进一步约束泛型类
本文关键字:函数 成员 进一步 泛型类 约束 一个 | 更新日期: 2023-09-27 18:03:42
对这里的泛型没有经验。我是否能够约束方法的类型超过它的类约束,如果它进一步降低其类型层次结构?
这是我尝试的(BotAccountDetailsBase派生自AccountDetailsBase):
public class SafeOffer<TAcc> where TAcc : AccountDetailsBase
{
public readonly TAcc account_;
public readonly List<ItemData> items_;
private SafeOffer(TAcc account, List<ItemData> items)
{
account_ = account;
items_ = items;
}
public static List<SafeOffer<TAcc>> DivideOffer<TBot>(IEnumerable<BotAccountDetailsBase> accounts, List<ItemData> items) where TBot : BotAccountDetailsBase
{
var accounts_to_trade = new List<SafeOffer<TBot>>();
// get the bots of the right type, order by slots
var typed_account = accounts.OfType<TBot>().OrderByDescending(x => x.slotsleft_);
foreach (var acc in typed_account)
{
if (items.Count > 0)
{
var bundle = items.Take(acc.slotsleft_);
items.RemoveAll(x => bundle.Contains(x));
var offer = new SafeOffer<TBot>(acc, bundle.ToList());
accounts_to_trade.Add(offer);
}
}
return accounts_to_trade;
}
}
由于TAcc和TBot不相同,因此无法编译。有什么魔法可以让我用吗?
只需将返回类型更改为List<SafeOffer<TBot>>
:
public static List<SafeOffer<TBot>>
DivideOffer<TBot>(IEnumerable<BotAccountDetailsBase> accounts, List<ItemData> items)
where TBot : BotAccountDetailsBase