Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Initialize generic object with unknown type

Tags:

c#

types

generics

How can I initialize a list containing generic objects whose types can be different?

For example, I have the following:

this.Wheres = new List<Where<>>();

As you know, <> is not valid syntax. However, sometimes the type passed to Where will be a string and sometimes it will be DateTime, etc. I tried using object as the initialized type, but that doesn't work either.

like image 425
David Brown Avatar asked Jul 20 '26 05:07

David Brown


2 Answers

Well, you haven't really given enough context (what's SqlWhere?) but normally you'd use a type parameter:

public class Foo<T>
{
   private IList<T> wheres;

   public Foo()
   {
       wheres = new List<T>();
   }
}

If you want a single collection to contain multiple unrelated types of values, however, you will have to use List<object>

like image 197
Jon Skeet Avatar answered Jul 21 '26 18:07

Jon Skeet


this.Wheres = new List<Object>();
like image 35
Sergio Avatar answered Jul 21 '26 18:07

Sergio