Я хочу реализовать классы B1, B2, B3, ..., которые наследуются от класса A. Объекты BX (ie. B1) также имеют варианты. Моя цель - создать объекты класса B1 примерно так:
B1 b1 = new B1(new DefinitionB1(b1variantId), options);
B2 b2 = new B2(new DefinitionB2(b2variantId), options);
Где свойства, являющиеся частью определения варианта, должны быть реализованы в классе A, так как они работают одинаково для классов BX.
Мой код ниже, и, кажется, он работает нормально, но мне было интересно, есть ли лучший способ реализовать это. Есть ли способ неявно получить свойство Name из B1Definition при вызове b1.Name, вместо того, чтобы реализовывать метод получения в классе A?
Надеюсь, это имеет смысл, пожалуйста, дайте мне знать, если я должен объяснить подробнее.
Имеет ли смысл моя реализация или я сильно переигрываю?
Спасибо за вашу помощь.
public interface IDefinition
{
public string Name { get; set; }
}
public abstract class A
{
public abstract IDefinition Definition { get; set; }
public A(IDefinition definition)
{
this.Definition = definition;
}
public string Name {
get => this.Definition.Name;
set => this.Definition.Name = value;
}
}
public class B : A
{
public override IDefinition Definition { get; set; }
public B(DefinitionB definition) : base(definition) { }
}
public class DefinitionB : IDefinition
{
public string Id { get; set; }
public string Name { get; set; }
}