我想将 System.Type
转换为通用类型定义,以便我可以使用它来调用通用方法。基本上是 typeof
的反转。
示例(我在需要真正解决方案的地方使用了“classof”,以便您看到我遇到问题的地方,因为 classof 不是真正的 .NET 方法):
public class BaseAppContext {
private Type settingsType;
public Type SettingsType
{
get { return this.settingsType; }
set { this.SettingsType = value; }
}
public void MyFunction() {
MyStaticClass.GetData<classof(this.SettingsType)>();
}
}
关于我为何使用这种奇怪的方式来处理问题的更多信息。 BaseAppContext 是一个被很多其他类引用的类。如果我想让它成为通用的,那将意味着代码的很多其他部分都会发生变化,这是我不希望的。我正在写一个框架,所以我希望框架只输入一次类型,开发人员可以使用提供的函数,而不必在每次尝试调用方法时都处理类型。
最佳答案
这是不可能的,因为SettingsType
在运行时设置,代码介于 <>
之间已编译。
您可以像这样创建您的类型的实例:
var type = Type.GetType(SettingsType);
var inst = Activator.CreateInstance(type);
并投inst
到接口(interface)或基类。
因为您使用的是静态类,所以 rich 的答案更好。
关于c# - 将类型转换为通用类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163694/