Why is this not possible?
I get the following compiler-error when instantiating “DerivedClass” with a constructor-parameter:
‘GenericParameterizedConstructor.DerivedClass’ does not contain a constructor that takes 1 argument
But calling a very similar method works.
Why?
class Program
{
static void Main(string[] args)
{
// This one produces a compile error
// DerivedClass cls = new DerivedClass("Some value");
// This one works;
DerivedClass cls2 = new DerivedClass();
cls2.SomeMethod("Some value");
}
}
public class BaseClass<T>
{
internal T Value;
public BaseClass()
{
}
public BaseClass(T value)
{
this.Value = value;
}
public void SomeMethod(T value)
{
this.Value = value;
}
}
public class DerivedClass : BaseClass<String>
{
}
Constructors aren’t inherited – it’s as simple as that.
DerivedClasscontains a single constructor – the public parameterless constructor provided by default by the compiler, because you haven’t specified any constructors.Note that this has nothing to do with generics. You’d see the same thing if
BaseClassweren’t generic.It’s easy to provide constructors for
DerivedClassthough: