如何存储T型

时间:2013-07-27 20:46:03

标签: c#

T存储在列表/字典(例如Dictionary<string, T>)中,如果它可以是任何内容并且没有约束,那么等同于什么?

我有Method<T>(string someString)形式的方法。在这种方法中,我需要保存字符串和T以供以后使用。另一种方法(来自另一个API)将使用字符串和T.这将在稍后的Task.Run中发生(我认为这与此无关)。

此类定义中没有<T>,因为类本身不存储与T相关的任何内容。

编辑:这是流程:

我的代码中的某处:

public void MyMethod<T>(string someString) { ... }

稍后,如果满足某些条件,我的代码中的其他位置(不一定在MyMethod类中)

public void SomeMethodFromAnotherAPI<T>(string someString)

3 个答案:

答案 0 :(得分:1)

你的意思是这样的:

Dictionary<string, Type> dict = new Dictionary<string, Type>();

public void Method<T>(string text)
{
    dict.Add(text, typeof(T));
}

public void Usage()
{
    Method<string>("string");
    Method<IList>("list");
    Method<Action>("action");
}

答案 1 :(得分:1)

void TheirMethod<T>(string text) { }

void MyMethod<T>(string text)
{
    Action action = () => TheirMethod<T>(text);
    // you can now return the action,
    // construct a thread with it
    // add it to a List...
    var thread = new Thread(new ThreadStart(action));
    thread.Start();
}

答案 2 :(得分:0)

我建议在C#中查看泛型。这就是C#接近模板的方式。

Introduction to Generics.

您可能还试图简单地存储该类型。此时,您需要使用Type classGetType方法或TypeOf关键字来获取类型。