因此,在处理Func ,泛型和lambda表达式时,我有点不适应,但我认为我了解了大概的意思,但仍然有些困惑。我已经实现了SortableObservableCollection类(从在线某个地方获取-感谢我从谁那里获得的!),它的用法如下:_lookuplistViewModel.Sort(x => x.BrandName, ListSortDirection.Ascending);其中x是可排序集合实现的对象类型。在这种情况下,BrandName是所实现的对象类型的属性,但是我想在通用类中使用以上代码,并传递要在其上进行排序的属性。 Sort方法如下所示:public void Sort<TKey>(Func<T, TKey> keySelector, ListSortDirection direction){ switch (direction) { case ListSortDirection.Ascending: { ApplySort(Items.OrderBy(keySelector)); break; } case System.ComponentModel.ListSortDirection.Descending: { ApplySort(Items.OrderByDescending(keySelector)); break; } }}调用Sort方法的通用类的定义如下:public class ExtendedLookupManagerViewModel<VMod, Mod> : LookupManagerViewModelwhere VMod : ExtendedLookupViewModelwhere Mod : ExtendedLookupModelBase我想创建一个这样的实例:_medProd = new ExtendedLookupManagerViewModel<MedicinalProductViewModel, MedicinalProduct>(string property);其中property是要排序的属性。理想情况下,这应该是类型安全的,但是字符串就足够了。谁能帮助我指引正确的方向? (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 只需使您的构造函数sig与sort方法的sig相匹配,并在调用Sort()时缓存要在集合中使用的参数。因此,不是“字符串属性”,而是排序方法的信号是什么。然后,传递的参数将是一个函数,该函数可以是特定于类型的并将您定向到元素,实例化为_medProd = new ExtendedLookupManagerViewModel<MedicinalProductViewModel, MedicinalProduct>(x => x.BrandName, ListSortDirection.Ascending); (adsbygoogle = window.adsbygoogle || []).push({}); 10-01 19:32