Динамическое присваивание свойства, передающее свойство интерфейса - PullRequest
1 голос
/ 02 ноября 2010

У меня есть универсальный класс с 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 дочернего класса.

Какой, по вашему мнению, может быть лучший способ добиться этого?

1 Ответ

0 голосов
/ 14 марта 2011

Разве вы не хотите, чтобы ICommand имел свойство Action как свойство, а не создавал какую-то фабрику?

В наборе инструментов mvvmlight есть такая команда.

RelayCommand

RelayCommandGeneric

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...