Take a look at new Constraint
public class MyClass<T> where T : new() { protected T GetObject() { return new T(); } }
T
could be a class that does not have a default constructor: in this case new T()
would be an invalid statement. The new()
constraint says that T
must have a default constructor, which makes new T()
legal.
You can apply the same constraint to a generic method:
public static T GetObject<T>() where T : new() { return new T(); }
If you need to pass parameters:
protected T GetObject(params object[] args) { return (T)Activator.CreateInstance(typeof(T), args); }