I need to instatiate a C# type dynamically, using reflection. Here is my scenario: I am writing a base class, which will need to instantiate a certain object as a part of its initialization. The base class won't know what type of object it is supposed to instantiate, but the derived class will. So, I want to have the derived class pass the type to the base class in a base() call. The code looks something like this:
public abstract class MyBaseClass
{
protected MyBaseClass(Type myType)
{
// Instantiate object of type passed in
/* This is the part I'm trying to figure out */
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass() : base(typeof(Whatever))
{
}
}
In other words, the base class is delegating to its derived type the choice of the object type to be instantiated.
Can someone please assist?
Try
Activator.CreateInstance(Type)
http://msdn.microsoft.com/en-us/library/wccyzw83.aspx
You're looking for
Activator.CreateInstance
There are are various overloads of this method that can take constructor arguments or other information to find the type (such as names in string form)
You might want to use generics instead:
The
where T : new()
is required to support thenew T()
construct.