gpt4 book ai didi

c# - 将类型转换为通用类定义

转载 作者:可可西里 更新时间:2023-11-01 09:05:32 24 4
gpt4 key购买 nike

我想将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com