我开始使用.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在某个地方定义了一个ext.方法Run to 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;
我还尝试在我的项目中使用Nugetrx.main和ix.main包,但错误总是存在的。
在谷歌IEnumerable+Run上搜索没有给我任何信息。
感谢您的帮助。
感谢
嗨,我想你正在看的是一个非常旧的样本。
现在,它被扩展方法ForEach
所取代,该方法可以在System.Interactive
dll的System.Linq
命名空间中找到(我认为是IX Main nuget(。
您还将注意到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);
}