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
object instance = Activator.CreateInstance(myType);
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:
public abstract class MyBaseClass<T> where T : new()
{
protected MyBaseClass()
{
T myObj = new T();
// Instantiate object of type passed in
/* This is the part I'm trying to figure out */
}
}
public class MyDerivedClass : MyBaseClass<Whatever>
{
public MyDerivedClass()
{
}
}
The where T : new()
is required to support the new T()
construct.
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