c# - C#获取IEnumerable <TModel>的类型

标签 c# generics collections types

我有一个传递IEnumerable<TModel>的方法。然后,根据TModel的类型,该方法执行以下指令集:

    public void MyMethod<TModel>(IEnumerable<TModel> items) where TModel : class
    {
        int operationType;
        switch (typeof(TModel))
        {
            case typeof(MyModelOne):
                operationType = 1;
                break;
            case typeof(MyModelTwo):
                operationType = 2;
                break;
            case typeof(MyModelThree):
                operationType = 3;
                break;
            default:
                throw new Exception("The collection model passed to MyMethod is not recognized");
        }
        ...
    }


这不起作用,我得到了错误:

没有应用程序变量或成员“ TModel”

最佳答案

您无法打开Type变量。用级联if语句替换它。

 if (typeof(TModel) == typeof(MyModelOne)) {
    operationType = 1;
 } else if (typeof(TModel) == typeof(MyModelTwo)) {
    operationType = 2;
 } // ...

关于c# - C#获取IEnumerable <TModel>的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2882556/

相关文章:

c# - C# 中的集合

c# - 从 Web 服务输出中清除 ASCII 控制字符

javascript - TypeScript:TypedArray 的泛型类型定义

java - 使用泛型实现接口(interface)时返回错误

c# - 检查泛型类型是否继承自泛型接口(interface)

c# - BlockingCollection 或 Queue<T> 用于作业?

c# - 打印 <div> 标签内的图表

c# - 删除 SQL 数据库中不存在的图像

c# - 具有泛型类型的接口(interface)中的枚举返回函数出错

java - Collections.shuffle 连续多次