我目前正在努力获得使用memberexpression集合内的项目完成的方法。 我知道如何写一个memberexpression直接持有集合的成员,但我怎么能告诉它使用它的基础类型。Memberexpression对收集项目
private Collection<TestClass> collection { get; set; }
DoSomethingWithCollection(collection,() => collection.Count);
private void DoSomethingWithCollection(Collection<TestClass> collection, MemberExpression member)
{
foreach(var item in collection)
{
//use reflexion to get the property for each item
//based on the memberexpression and work with it
}
}
我怎么会需要重写这段代码DoSomethingWithCollection的呼叫可以保持基本类型的集合的Memberexpression,所以从“识别TestClass”?
让我确定我明白了:假设你的'MemberExpression'指向一个属性'Name'。在这种情况下,您只需要读取集合中每个项目的'Name'属性?因为在你的用例中,你传入了一个读取集合本身的属性的lambda('Count')。 –
那是正确的。我只是在集合中的类的属性中进行操作。我提供了Count作为例子,因为这就是我知道如何处理集合“直接”,但我不知道如何处理底层类型。 –
您是否希望能够将lambda作为第二个参数传入,如您的示例中所示? –