首页 > 解决方案 > 如何将字符串转换为类引用并将其发送到泛型类

问题描述

我意识到有些问题听起来与我的相似,但它们并没有解决我的问题。所以我想将字符串更改为类引用,但我不能更改为类型、动态或任何类型的变量,因为那样它不适用于我的泛型类。

请注意,当我使用有效的类引用时,代码有效。但是我在数据库中有很多表,如果它可以更通用,那将有很大帮助。

通用类,在这里一切正常

private class GenericController<T>
        {
            private CoreGradingDBEntities db = new CoreGradingDBEntities();

            public dynamic Get(string Table, string Field, string id)
            {
                dynamic str = db.Database.SqlQuery<T>("SELECT * FROM " + Table + " WHERE " + Field + " = '" + id + "';").ToList();
                return  str;
            }
        }

我从中调用泛型类的方法。当我使用有效的类引用时,它可以工作。所以下面的代码确实有效。

    [Route("api/Values/Table/Field/id")]
        public dynamic Get(string Table, string Field, string id)
        {
            GenericController<Account> generic = new GenericController<Account>();
            dynamic d = generic.Get(Table, Field, id);
            return d;
        }

我想要做的是替换帐户参考。我已经尝试过了,但它把它变成了一个“变量”。Table 参数是我想要的字符串形式的类引用。下面的代码是错误的,但你明白我想要做什么。

        [Route("api/Values/Table/Field/id")]
        public dynamic Get(string Table, string Field, string id)
        {
            Type type = Type.GetType(Table); 
            GenericController<type> generic = new GenericController<type>(); //Compiler complaining 
            dynamic d = generic.Get(Table, Field, id);
            return d;
        }

任何帮助将非常感激。谢谢!

标签: c#asp.netapi

解决方案


我相信泛型类型参数必须在编译时指定。看到这个问题

如果你真的想这样做,你将不得不诉诸反思


推荐阅读