一个关于继承的问题

yccalculus 2017-10-29 03:37:49
我写了一个树形类,代码如下:

public class Tree<T>
{
public T ID;
public T ParentID;
public readonly List<Tree<T>> Children = new List<Tree<T>>();

public static Tree<T> ListToTree(List<Tree<T>> list, T RootID)
{
//略
}
}

然后想这样使用:

public class UserGroup: Tree<int>
{
public string Name;

public static UserGroup GetTree(int ID)
{
var list = new List<UserGroup>();

//从数据库获取数据并按行转换为 UserGroup,添加到 list,略

return ListToTree(list, ID);
}
}

然后发现调用 ListToTree 有错误提示:“无法从 UserGroup 转换为 Tree2<int>”。
我应该怎么修改?或者有什么别的更好的写法?
...全文
146 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yccalculus 2017-10-30
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
ListToTree(List<Tree<T>> 第一个参数是 List<Tree<T>> 不是你定义的 List<UserGroup>() 的对象list。
引用 3 楼 hanjun0612 的回复:
var list = new List<Tree<int>>(); return ListToTree(list, ID);
是的,但是 UserGroup 类里面还有 Tree<T> 里没有的字段和方法。 我是想做一个比较通用的树形类来处理树形数据,但是如果这里换为 Tree<T> 那我后面使用 list 的时候就没法使用 UserGroup 有的字段和方法了。
yccalculus 2017-10-30
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Tree2<int> 是什么鬼 你继承的是 Tree<int>
不好意思应该是没有2的,那个2我复制过来忘记去掉了
正怒月神 2017-10-30
  • 打赏
  • 举报
回复
var list = new List<Tree<int>>(); return ListToTree(list, ID);
exception92 2017-10-30
  • 打赏
  • 举报
回复
ListToTree(List<Tree<T>> 第一个参数是 List<Tree<T>> 不是你定义的 List<UserGroup>() 的对象list。
yccalculus 2017-10-30
  • 打赏
  • 举报
回复
public Y ListToTree<Y>(List<Y> list, T RootID) where Y : Tree2<T>, new() 变通了一下可以了
threenewbee 2017-10-29
  • 打赏
  • 举报
回复
Tree2<int> 是什么鬼 你继承的是 Tree<int>

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧