【问题标题】:Create reference to a class from a string variable [duplicate]从字符串变量创建对类的引用[重复]
【发布时间】:2015-10-15 07:25:42
【问题描述】:

这是我需要做的;

string className = "Customer";
List<className> myList = new List<className>();

className 可以是我的任何实体框架类。我以客户为例。

我希望这是可能的。如果有,怎么做?

更新:

我还需要使用这种方法从实体框架 dbContext 中检索数据。比如……

        string className = "Customer";
        var myData = db.Set<className>();

对不起。不确定我是否应该在这里创建另一个问题或更新这个问题。对我温柔点。我是新来的。 :o)

【问题讨论】:

  • 你为什么需要它?如果您有这样的要求,那么您在 99.999% 的情况下都知道您使用了错误的方法。
  • @Nikita 你能举个例子吗?谢谢。
  • @Tim,我有一个用于包装 JSON 结果的通用方法,我不想为解决方案中的所有实体复制我的代码。如果我能做我要求帮助的事情,它将防止大量冗余代码。如果那是 99.999% 的错误,那就这样吧。
  • 您不妨选择List&lt;object&gt;,因为无论如何您都必须像对待代码的其余部分一样对待该列表。
  • 您打算使用什么类型的参考? object 或其他一些基类?泛型让你最接近问题的解决方案(尝试使用协变参数,但你不能使用List&lt;&gt;

标签: c# .net


【解决方案1】:

如果您愿意,可以在这种情况下使用反射,但我会考虑另一种解决方案。

Type type = Type.GetType("Namespace.ClassName");
Type listType = typeof(List<>).MakeGenericType(new [] { type } );
IList list = (IList)Activator.CreateInstance(listType);

【讨论】:

  • 检查这个答案!这就是你可以使用反射的方式。
【解决方案2】:

你可以使用:

Type customerType = Type.GetType("this.is.a.namespace.Customer");

相关:other question

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 2016-02-24
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多