如何存储类型T

本文关键字:类型 存储 何存储 | 更新日期: 2023-09-27 18:25:07

如果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)

如何存储类型T

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();
}

你的意思是这样的吗:

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");
}

我建议研究C#中的泛型。这就是C#处理模板的方法。

遗传学导论。

您可能还试图简单地存储类型。此时,您将希望使用Type类的GetType方法或TypeOf关键字来获取类型。