我遇到了一些困难,我不确定如何最好地解决这个问题。
我编写了一个类,希望在创建新实例时指定数据类型。与存储指定类型的多个项的System.Collections.Generic.List<T>
类的方式非常相似。但是我的类与List<T>
类没有相同或相似的功能。
创建我的班级的新实例后,例如:
string phrase = "Some string type data.";
MyClass<string> data = new MyClass<string>( () => phrase );
之后,我的课程将提供一些方法,无论MyClass<T>
(T
是数据类型)的数据类型如何,都会给出结果。无论是字符串,bool,int还是任何类型都无关紧要。
我已经测试了我的类,它按预期工作,现在如何在MyClass
等集合类中存储List<>
的多个元素但每个元素具有不同的赋值数据类型
让我举例说明(代码将包含语法错误,因为我不确定如何正确编写):
// 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) );
如果这是我想要完成的事情,我就不会有问题,但由于我想在最后一个例子之前完成我所举例说明的事情,我只是不确定如何做到最好。
基本上这就是我的问题,我提供了一些基本的例子,因为我相信我的问题可能有点奇怪,说实话我的术语并不足以让我认为。
对于你们中的一些人来说,这可能很简单。谢谢你的帮助。
答案 0 :(得分:7)
通常,您要为泛型类型创建非泛型基类(或接口):
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#中没有任何帮助你遇到这种情况。