gpt4 book ai didi

C# 将当前泛型类实例传递给其他类

转载 作者:行者123 更新时间:2023-11-30 12:21:05 27 4
gpt4 key购买 nike

最近我开始学习泛型。我在存储对泛型类实例的引用时遇到了麻烦。如您所见,我的类 ListHandler 可以存储对特定类型的 BaseClass 的引用。我很想自己注册 BaseClass 实例,这就是为什么我想通过添加“where”来保证它们将使用 BaseParamClass。无论如何 - 它不编译。'This',即使在类中使用'where'关键字也不知道 T 实际上是 BaseClassParam。我不知道这里出了什么问题,我在任何地方都找不到答案。我将不胜感激提示/指南/解决方案。

public class ListHandler
{
private List<BaseClass<BaseParamClass>> list;

public ListHandler()
{
list = new List<BaseClass<BaseParamClass>>();
}

public void Register(BaseClass<BaseParamClass> param)
{
list.Add(param);
}
}

public class BaseClass<T> where T : BaseParamClass
{
private ListHandler listHandler;

public T Param { get; private set; }

public BaseClass(ListHandler listHandler)
{
this.listHandler = listHandler;
listHandler.Register(this); //throws error
}
}

最佳答案

你为什么不做 ListHandler也通用?

public class ListHandler<T>
{
private List<BaseClass<T>> list;

public ListHandler()
{
list = new List<BaseClass<T>>();
}

public void Register(BaseClass<T> param)
{
list.Add(param);
}
}

public class BaseClass<T>
{
private ListHandler<T> listHandler;

public T Param { get; private set; }

public BaseClass(ListHandler<T> listHandler)
{
this.listHandler = listHandler;
listHandler.Register(this);
}
}

此外,我觉得 BaseClass<T> 很奇怪包含对引用了 BaseClass<T> 的类的引用本身。

关于C# 将当前泛型类实例传递给其他类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47521461/

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