动态属性赋值传递接口属性

时间:2010-11-02 20:32:13

标签: c# linq generics dynamic lambda

我有一个具有ICommand属性的泛型类。这是一个复合对象,用作具有ICommand属性的子对象。

我正在搜索一个系统,在运行时定义用于此类的接口和子对象的命令属性,这些属性必须像泛型的ICommand属性一样被“使用”。

最后有这样的事情:

    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 :(得分:0)

难道你真的不想要一个将Action作为属性而不是制造某种工厂的Command。

mvvm light toolkit有这样的命令。

RelayCommand

RelayCommandGeneric