In Java I am able to have a list of classes like:
List<Class>
But how do I do this in C#?
If you mean a list of actual classes, not instances of a class, then you can use Type
instead of Class
. Something like this:
List<Type> types = new List<Type>();
types.Add(SomeClass.GetType());
types.Add(SomeOtherClass.GetType());
To actually instantiate a class given a classes Type
you can use Activator
or reflection. See this post for information on that. It can get a little complicated however when the compiler doesn't know about the constructors/parameters and such.
// Create an instance of types[0] using the default constructor
object newObject = Activator.CreateInstance(types[0]);
Or alternatively
// Get all public constructors for types[0]
var ctors = types[0].GetConstructors(BindingFlags.Public);
// Create a class of types[0] using the first constructor
var object = ctors[0].Invoke(new object[] { });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With