У меня есть следующие настройки (очевидно, упрощенно):
Абстрактный класс с объектом A и абстрактным методом
abstract public class X
{
protected A myA;
abstract public int MethodForX();
}
Два наследующих класса, каждый из которых переопределяет метод. Однако вместо использования объекта A они используют объекты B и C, каждый из которых наследуется от A.
public class Y : X
{
public Y()
{
myA = new myB(); //B inherits from A
}
override public int MethodForX()
{
return (myA as myB).MethodForB(1);
}
}
public class Z : X
{
public Z()
{
myA = new myC(); //C inherits from A
}
override public int MethodForX()
{
return (myA as myC).MethodForC(1, 2);
}
}
У меня нет прямого контроля над A, B и C. (В частности, B и C - это два разных табличных адаптера, A - их общий предок, а MethodForB / C - метод GetData с разными аргументами для каждого. ) * * 1009
Мне не нравится использовать «как» каждый раз, когда я хочу получить доступ к полю. Я хотел бы, чтобы Y и Z знали, что поле принадлежит к их обязательному классу, но ограничьте этот класс наследником класса в X.
Есть ли способ сделать это или нет, или я пытаюсь сделать что-то ужасное?