how to create instance for a generic type in c#

后端 未结 1 1757
感动是毒
感动是毒 2020-12-21 09:13

I need to create an parameterless instance for a Generic Class in C#.

How to do this.

相关标签:
1条回答
  • 2020-12-21 09:44

    You could add the : new() constraint:

    void Foo<T>() where T : class, new() {
        T newT = new T();
        // do something shiny with newT
    }
    

    If you don't have the constraint, then Activator.CreateInstance<T> may help (minus the compile-time checking):

    void Foo<T>() {
        T newT = Activator.CreateInstance<T>();
        // do something shiny with newT
    }
    

    If you mean you the type itself, then probably something like:

    Type itemType = typeof(int);
    IList list = (IList)Activator.CreateInstance(
             typeof(List<>).MakeGenericType(itemType));
    
    0 讨论(0)
提交回复
热议问题