Я предполагаю, что вы имеете в виду не какой бы * класс 1002 *, а скорее все классы игровых объектов ?В таком случае это может быть хорошим дизайном, если all игровому объекту действительно нужны эти атрибуты.
Роль абстрактного базового класса состоит в том, чтобы собрать общий код, чтобы избавиться от повторений вподклассы.Если все подклассы игровых объектов нуждаются в этих полях, то правильно поместить их в базовый класс.Если разные подклассы игровых объектов инициализируют их различными значениями, то правильно отложить инициализацию для подклассов.
Одна из возможностей принудительной инициализации этих полей состоит в том, чтобы обеспечить базовый конструктор, не требующий ошибки, для подклассов требуетсяпередать значения init как параметры в ctor.
Я предполагаю, что вы имеете в виду пример конструктора?Измените свой существующий
public CharacterClass()
{
}
на что-то вроде
public CharacterClass(Attribute[] attributeBonuses,
SKill[] majorSkills, Skill[] minorSkills)
{
if(attributeBonuses == null || majorSkills == null || minorSkills == null)
throw new ArgumentException("Null values are not allowed");
this.attributeBonuses = attributeBonuses;
this.majorSkills = majorSkills;
this.minorSkills = minorSkills;
}