C#方法返回一个类型

标签 c# .net generics return-type

我有几个类由一些 ID 标识(每个类都是唯一的整数)。接下来我需要一个以整数 (ID) 作为参数并返回相应类类型的方法。到目前为止,我已经做到了这一点:

public static Type GetById(int id)
{
    switch (id)
    {
        case 1: return (new ClassA()).GetType();
        case 2: return (new ClassB()).GetType();
        case 3: return (new ClassC()).GetType();
        // ... and so on
    }
}

目前看来它可以工作,但出于某种原因我不喜欢我必须实例化该类才能获取其类型。这会导致任何问题吗?

我发现的另一个解决方案是使用 Type.GetType(classNameAsString) 方法,但我猜这可能会导致一些运行时错误或错误,以防类名更改(即我更改类名,但忘记更新 GetById 方法)。

有更好的方法吗?

最佳答案

使用 typeof运算符代替

public static Type GetById(int id)
{
    switch (id)
    {
        case 1: return typeof(ClassA);
        case 2: return typeof(ClassB);
        case 3: return typeof(ClassC);
        // ... and so on
    }
}

作为旁注,我会严重质疑整个设计 - 将类型映射到整数感觉很奇怪。

关于C#方法返回一个类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230629/

相关文章:

c# - 通过 .net 客户端通过 SSL 连接到 IBM MQ

c# - 在 WPF 控件上显示 'loading' 指示符的最佳方法是什么

c - 类似于 C++ 泛型的 C 函数

swift - 无法使用可编码通用参数调用函数

c# - Trace.Assert 没有中断,也没有显示消息框

C# Windows 窗体 ComboBox 下拉内容

c# - 无需签名即可部署 ClickOnce 应用程序

c# - 使用 OleDb 以只读模式打开 Excel 文件?

c# - 用多行 C# 代码编写 SQL 查询

ios - Swift Xcode 从闭包内的通用类型参数获取 <<error type>>