Example #1
0
        /// <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");
        }