I would like to write a method that works sort of like this:
public class BaseClass {}
public class DerivedClass1 : BaseClass {}
public class DerivedClass2 : BaseClass {}
public class BaseClassCreator
{
public static T Create<T>() where T : BaseClass
{
if( T is DerivedClass1 ) return new DerivedClass1();
if( T is DerivedClass2 ) return new DerivedClass2();
return null;
}
}
I am getting compiler errors saying I can not converted DerivedClass1 to T. How do I need to write this method to do the following:
BaseClass x = BaseClassCreator.Create<DerivedClass1>();
BaseClass y = BaseClassCreator.Create<DerivedClass2>();
Activator.CreateInstance<T>()method doesn't do.