c# – 如何在没有定义T类型的情况下存储“类”类型的类集合

我遇到了一些困难,我不确定如何最好地解决这个问题.

我编写了一个类,希望在创建新实例时指定数据类型.与System.Collections.Generic.List< T>的方式非常相似.存储指定类型的多个项的类.然而,我的班级没有与列表< T>相同或类似的功能.上课.

在创建我的类的新实例后,例如:

string phrase = "Some string type data.";
MyClass<string> data = new MyClass<string>( () => phrase );

之后,我的课程将提供许多方法,这些方法将给出结果,而不管被赋予MyClass< T>的数据的类型如何. (其中T是数据类型).无论是字符串,bool,int还是任何类型都无关紧要.

我已经测试了我的类,它按预期工作,现在如何在List<>等集合类中存储MyClass的多个元素,但每个元素具有不同的赋值数据类型.

让我举例说明(代码将包含语法错误,因为我不确定如何正确编写):

// My intent... Not sure how to do it.
string phrase = "Some string data type.";
int number = 23;
bool boolData = false;

List<MyClass<T>> list = new List<MyClass<T>>();

list.Add( new MyClass<string>( () => phrase ) );
list.Add( new MyClass<int>( () => number ) );
list.add( new MyClass<bool>( () => boolData ) );

如您所见,我不知道如何使用不同的赋值数据类型存储MyClass的许多元素,如果它们都是相同的赋值数据类型,我就不会遇到这个问题.

例如:

// How it should be done. But not what I need.
string phrase1 = "Hello Phrase 1.";
string phrase2 = "Hello Phrase 2.";

List<MyClass<string>> list = new List<MyClass<string>>();

list.Add(new MyClass<string>( () => phrase1) );
list.Add(new MyClass<string>( () => phrase2) );

如果这是我想要完成的,我不会有问题,但是因为我想完成我在最后一个例子之前所例证的内容,我只是不确定如何做到最好.

基本上这就是我的问题,我提供了一些基本的例子,因为我相信我的问题可能有点奇怪,说实话,我的术语并不足够.

对于你们中的一些人来说,这可能很简单.谢谢你的帮助.

最佳答案
通常,您将为泛型类型创建非泛型基类(或接口):

abstract class MyClass // Or interface
{
    // Anything useful but non-generic here
}

class MyClass<T> : MyClass
{
    // Anything using T
}

然后你可以创建一个List< MyClass>.当然要获得MyClass< T>内的任何成员你需要知道正确的T,但我认为这是不可避免的.

当然,如果你不控制MyClass< T>,这对你没有多大帮助.并且它没有提供有用的基类 – 但C#中没有任何东西可以帮助您解决这种情况.

转载注明原文:c# – 如何在没有定义T类型的情况下存储“类”类型的类集合 - 代码日志