我正在开发一个基本上是实时 linq 的小型库。我应该能够做这样的事情:
var list1 = new BindingList<int>();
ReadOnlyBindingList<int> live = list1.LiveSelect(i => i + 1);
在这里,ReadOnlyBindingList是我编写的一个通用抽象类,它实现IBindingList但不继承BindingList<T>. 该LiveSelect方法接受一个BindingList<T>列表并返回一个实现ReadOnlyBindingList<T>抽象类的类。现在我希望能够做到:
ReadOnlyBindingList<int> live = list1.LiveSelect(i => i + 1).LiveSelect(i => i * i);
但为了做到这一点,我LiveSelect需要采用 a ReadOnlyBindingList<T>,这将迫使我添加一个扩展方法AsReadOnly,该方法将采用 aBindingList<T>并将其包装到继承自的类中ReadOnlyBindingList<T>,因此我的代码如下所示:
ReadOnlyBindingList<int> live = list1.AsReadOnly().Select(i => i + 1).Select(i => i * i);
或者有LiveSelect一个IBindingList并被迫在任何地方添加强制转换 from objecttoTResult并且当我连接多个时也使编译器无法从用法推断类型LiveSelect,这样我的代码需要看起来像这样:
var live = list.LiveSelect(i => i + 1).LiveSelect<int, int>(i => i + 1);
有什么办法可以让我的代码看起来像这样:
var live = list.LiveSelect(i => i + 1).LiveSelect(i => i + 1);
list一个在哪里BindingList<int>?