Я не знаю простого способа написать полнофункциональный конструктор копирования в c#. Так что либо вы реализуете его в BaseClass
вручную, либо можете использовать Reflection для автоматизации.
Последний вариант - попытаться использовать Automapper , который будет иметь некоторые ограничения (но для предоставленного кода должен работать) с точки зрения того, что он может обрабатывать - только свойства / поля publi c будут будет отображаться, и реализация будет выглядеть так:
public class BaseClass
{
private static readonly IMapper _mapper;
static BaseClass()
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<BaseClass, BaseClass>());
_mapper = config.CreateMapper();
}
public int A;
public float B;
//a multitude of other fields
public string Y;
public BaseClass(){}
public BaseClass(BaseClass b)
{
_mapper.Map<BaseClass, BaseClass>(b,this);
}
};
public class DerivedClass : BaseClass
{
public string Z;
public DerivedClass(BaseClass b): base(b)
{
}
}