【问题标题】:C# passing generic type to another class [duplicate]C#将泛型类型传递给另一个类[重复]
【发布时间】:2013-03-07 09:42:22
【问题描述】:

我想知道有没有办法将泛型类型作为参数传递给另一个类。 换一种说法。我有SomeClass<T>AnotherClass。 我想AnotherClass 有一个类型为<T> 的实例字段,它将在构造函数中初始化。

(我希望SomeClass 成为AnotherClass 对象的列表。另一个类将有3 个实例字段引用前一个AnotherClass 对象引用到下一个AnotherClass 对象和一个T 类型字段。

【问题讨论】:

  • 如果您正在寻找运行时类型推导,例如不使您的类成为通用类并使其成为变体类型的成员,我认为这是不可能的(开箱即用)用 C#。你可以用一种临时的方式来做,构造函数接受一个对象,并存储对象和对象的类型。
  • 对我来说,这个问题看起来不像原始问题上面提到的那个的副本。在 this 问题中,类型将在编译时已知。它是关于强制相关类在使用泛型类型参数时使用相同的实际类型。

标签: c# class generics argument-passing


【解决方案1】:

听起来您正在制作一个通用容器。你需要这样的东西:

class Container<T>
{
    public T Value;

    public Container( T rhs )
    {
        Value = rhs;
    }
}

这是 C# 中的基本泛型。如果您提供更多描述,我可以更好地回答您的问题,但根据提供的信息,这就是您要查找的内容。

【讨论】:

  • 好的,但是如何将 ListClass 泛型类型 传递给 Container 类?
  • public Container( List list ) 其中 T 类型的 ListClass 与 Container 共享相同的基础类型。因此,如果它们都共享相同的 T,您可以将 T 的列表传递到 T 的容器中。
  • 非常感谢,我想我明白了,看起来很适合我。
  • 很高兴听到这个消息!你能把它标记为选定的答案吗?
【解决方案2】:
class MyClass<T> {
    public List<T> myList;

    public MyClass() {
        this.myList = new List<T>();
    }
}

这样吗?我不确定我是否 100% 理解这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多