У меня есть следующие действия:
abstract class AAction
{}
class BlueAction: AAction
{
void Foo1(){// do stuff}
void Foo2(){// do stuff}
}
и плагины, которые должны содержать действие:
class APlugin
{
AAction _action;
APlugin(AAction action)
{
_action = action;
}
}
class BluePlugin: APlugin
{
BluePlugin(): base(new BlueAction());
{
}
voif Foo()
{
// do stuff with BlueAction's methods
((BlueAction)_action).Foo1();
((BlueAction)_action).Foo2();
}
}
Я пытаюсь приспособить этот дизайн к шаблону дизайна, безудачи.
Я просто хочу заставить производные классы из APlugin
иметь AAction
Я мог бы просто сделать это:
BlueAction act = (BlueAction)_action;
act.Foo1();
act.Foo2();
Использование обобщений(как предложено) не позволяет мне иметь список APlugins, который мне действительно нужен.
Но для меня это не разрешено.Есть идеи?