Всем привет.
Задался таким вопросом существует ли в ООП "Маски" которые при наложении на объект возвращают, только то, что соответствует маске (методы, свойства...)?
Почему возник такой вопрос, если использовать наследование от интерфейса или абстрактного класса, то это накладывает на этапе проектирования ограничения на объекты.
Как я себе представляю действие маски. Допустим имеется два класса несвязанные между собой базовыми наследованием, применяя к ним маску мы получаем доступ к одинаково именованным методам и свойствам, которые соответствуют маске.
class A
{
public string name;
public void Test(){}
...
}
class B
{
public string name;
public void Test(){}
....
}
Накладываем маску
{
A a;
B b;
Mask1 mask;
mask = new Mask1(a);
mask.Test();
string name = mask.name;
mask = new Mask1(b);
mask.Test();
string name = mask.name;
List<A> listA;
List<B> listB;
TestForALL(MaskList(listA));
TestForALL(MaskList(listB));
}
....
void TestForALL(MaskList list)
{
for (int i=0; i<list.Count; i++)
{
list[i].Test();
string name = list[i].name;
}
}
Что скажите?