代码之家  ›  专栏  ›  技术社区  ›  Charlie Gevious

基于类型变量[duplicate]创建泛型对象

  •  31
  • Charlie Gevious  · 技术社区  · 15 年前

    我需要根据存储在数据库中的类型创建一个泛型对象。我怎样才能做到这一点?下面的代码(不会编译)解释了我的意思:

    string typeString = GetTypeFromDatabase(key);
    Type objectType = Type.GetType(typeString);
    
    //This won't work, but you get the idea!
    MyObject<objectType> myobject = new MyObject<objectType>();
    

    有可能做这种事吗?

    谢谢

    2 回复  |  直到 15 年前
        1
  •  62
  •   Marc Gravell    15 年前
    Type type = typeof(MyObject<>).MakeGenericType(objectType);
    object myObject = Activator.CreateInstance(type);
    

    还有——当心; Type.GetType(string) 仅检查正在执行的程序集和少数系统程序集;它不会扫描所有内容。如果使用程序集限定名,则应该可以,否则可能需要获取 Assembly someAssembly.GetType(string) .