gpt4 book ai didi

C#。有可能有一个带有基类型约束的静态泛型类,它有一个带有进一步基类型约束的方法

转载 作者:行者123 更新时间:2023-11-30 14:03:47 26 4
gpt4 key购买 nike

我希望能够创建一个带有基本类型约束的静态泛型类型

public static class Manager<T> where T : HasId
{
public static T GetSingleById(ref List<T> items, Guid id)
{
// the Id is a property provided by HasId
return (from i in items where i.Id == id select i).SingleOrDefault();
}
}

然后再添加一个方法

...
public static IEnumerable<T> GetManyByParentId(ref List<T> items, Guid parentId) where T : HasIdAndParentId
{
// the parentId is a property of HasIdAndParentId which subclasses HasId
return from i in items where i.ParentId == parentId select i;
}
...

由于 HasIdAndParentId 是 HasId 的子类,因此满足约束 T : HasId 但编译器不会接受方法上的 where 基类型约束。

有什么想法吗?

最佳答案

在这种情况下,您没有重新定义方法的类型参数,因此您不能应用任何新的约束。你应该可以这样做:

public static IEnumerable<T2> GetManyByParentId<T2>(
ref List<T2> items, Guid parentId)
where T2 : T, HasIdAndParentId { .. }

关于C#。有可能有一个带有基类型约束的静态泛型类,它有一个带有进一步基类型约束的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3478238/

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