我开始使用.NET的rx扩展并下载了一些来源。
基本示例工作正常,但是有一个函数显然导致错误,因为未声明扩展方法(应该使用某个指令导入)
导致错误的代码行是注释源中的第二个(list.Run)(我评论说可以编译):
/*
protected static void WriteListToConsole<T>(IEnumerable<T> list, string name) {
list.Run(
value => Console.WriteLine("{0} : {1}", name, value),
() => Console.WriteLine("{0} Completed", name));
}
*/
看起来Rx定义了一个分机。方法运行到IEnumerable但我没有导入它。
我安装了Rx v2.0.3 SDK.msi,在我的项目中向所有System.Reactive添加了引用。*我发现并使用了:
using System;
using System.Reactive.Subjects;
using System.Reactive.Linq;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
我也尝试在我的项目中使用Nuget rx.main和ix.main包,但错误始终存在。
在Google上搜索IEnumerable + Run不会给我任何信息。
任何帮助表示感谢。
由于
答案 0 :(得分:0)
嗨,我认为这是你正在看的一个非常古老的样本。
现在,用ForEach
dll中的System.Linq
命名空间(我认为是IX-Main nuget)中的扩展方法System.Interactive
替换了它。
您还会注意到 OnCompleted 函数参数已经消失,因为这是一个愚蠢的想法。新代码应如下所示:
protected static void WriteListToConsole<T>(IEnumerable<T> list, string name)
{
list.ForEach(value => Console.WriteLine("{0} : {1}", name, value));
Console.WriteLine("{0} Completed", name);
}