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

标签 c# .net

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

相关文章:

c# - EF Core 继承问题(HasDiscriminator)

c# - LINQ:不是任何 vs 全部都不是

c# - 如何覆盖单个自动映射器属性映射?

c# - 更快地实现总和(用于 Codility 测试)

c# - 使用数据库中的“选定”成员对组成员资格进行建模

c# - 跨多林环境从域本地组获取所有成员

.net - 如何分割 RTF 文件

iphone - 我应该开源我的 MonoTouch .NET iPhone 应用程序吗?

c# - 错误 : await requires that the type have a suitable GetAwaiter method

c# - 如何从 App.xaml.cs 导航到其他页面?