Было бы очень просто, если бы каждый класс инициализировал поля и свойства, которые он определил. Почему B ожидает, что базовый класс инициализирует свое Имя?
abstract class A
{
public A()
{
}
}
class B : A
{
// I know, its trivial, but it does the same ...
public B(string name) : base()
{
Name = name;
}
public string Name { set; get; }
}
Единственное, что я мог подумать о том, почему вы написали этот код, это то, что базовый класс имеет некоторую логику для инициализации поля. Прямо вперед - позволить производному классу вызывать логику, но инициализировать само поле:
abstract class A
{
public A()
{
}
protected string GenerateName(string someArg)
{
// complicated logic to generate the name
}
}
class B : A
{
public B(string someArg) : base()
{
Name = base.GenerateName(someArg);
}
public string Name { set; get; }
}