/// <summary> /// 生成Observable的测试代码 /// </summary> private static async void CreateDemo() { // ByCreate Console.WriteLine($"ByCreate Start... {DateTime.Now.ToLongTimeString()}"); var byCreate = CreateOperate.GetObservableByCreate().Timestamp(); await Task.Delay(TimeSpan.FromSeconds(2)); byCreate.SubscribeConsole("ByCreate"); // ByDefer var byDefer = CreateOperate.GetObservableByDefer(); byDefer.SubscribeConsole("ByDefer"); // 事件生成 var eventMock = new EventMock(); CreateOperate.GetObservableForEventPattern(eventMock).SubscribeConsole("ForEventPattern"); CreateOperate.GetObservableForEventPatternSimplest(eventMock).SubscribeConsole("ForEventPatternSimplest"); CreateOperate.GetObservableForNotFollowEventPattern(eventMock).SubscribeConsole("ForNotFollowEventPattern"); CreateOperate.GetObservableForMultipleParameters(eventMock).SubscribeConsole("ForMultipleParameters"); CreateOperate.GetObservableForNotArgument(eventMock).SubscribeConsole("ForNotArgument"); eventMock.RaiseEvent(); eventMock.RaiseEvent(); eventMock.RaiseEvent(); // Enumerable 转 Observable CreateOperate.EnumerableToObservable().SubscribeConsole("Enumerable 转 Observable"); CreateOperate.EnumerableToObservableWithException().SubscribeConsole("抛异常的Enumerable 转 Observable"); CreateOperate.EnumerableToObservableWithConcat() .SubscribeConsole("Enumerable 转 Observable 后使用 Concat() 拼接多个 Observable"); // Observable 转 Enumerable var enumerable = CreateOperate.ObservableToEnumerable(); foreach (var item in enumerable) { Console.WriteLine(item); } // ObservableToDictionary CreateOperate.ObservableToDictionary() .Select(x => string.Join(",", x)) .SubscribeConsole("Enumerable 转 Dictionary"); // ObservableToLookup CreateOperate.ObservableToLookup() .Select(lookup => { var groups = new StringBuilder(); foreach (var grouping in lookup) { groups.Append($"[Key => {grouping.Count()}]"); } return(groups.ToString()); }) .SubscribeConsole("Enumerable 转 Lookup"); // 循环生成Observable CreateOperate.GetObservableByLoopWithGenerate().SubscribeConsole("Generate 循环"); CreateOperate.GetObservableByLoopWithRange().SubscribeConsole("Range 循环"); // Using CreateOperate.GetObservableByResource().SubscribeConsole("Using 读取流"); // 生成简单的Observable CreateOperate.GetObservableByReturn().SubscribeConsole("Return"); CreateOperate.GetObservableByThrow().SubscribeConsole("Throw"); CreateOperate.GetObservableByNever().SubscribeConsole("Never"); CreateOperate.GetObservableByEmpty().SubscribeConsole("Empty"); }