У меня есть универсальный класс с ICommand
свойствами. Это составной объект, который используется в качестве дочернего объекта со свойствами ICommand
.
Я искал систему, чтобы определить во время выполнения интерфейс для использования с этим классом и свойства команды дочернего объекта, которые необходимо «использовать», как ICommand
свойство generic.
Наконец-то получилось что-то вроде этого:
public TestDynamic<T>
{
public ICommand ChildCommand;
public T CompositeChild;
...
}
public interface ITestOne{
ICommand DoSomethin{get;set;}
}
public interface ITestTwo{
ICommand DoSomethingMore{get;set;}
}
ITestOne MyObj1=...
ITestTwo MyObj2=...
TestDynamic<ITestOne> TD1=...
TD1.DynamicRegistration((i)=>i.DoSomething);
TD1.ChildCommand.Execute();//DoSomething execution
TestDynamic<ITestTwo> TD2=...
TD2.CompositeChild=MyObj2;
TD2.DynamicRegistration((i)=>i.DoSomethingMore);
TD2.ChildCommand.Execute();//DoSomethingMore execution
//Those are done in a different moment. Where i can't simply set the property
TD1.CompositeChild=MyObj1;
TD1.CompositeChild=MyObj1;
На самом деле с Action<T,ICommand>
я определяю делегата, который возвращает "правильный" ICommand
дочернего класса.
Какой, по вашему мнению, может быть лучший способ добиться этого?