小编luk*_*ler的帖子

您将如何使用SelectMany实现LINQ方法?

Erik Meijer喜欢指出每个LINQ函数实际上都可以由SelectMany实现; 其他一切都只是一种便利.

这就是Eric Lippert在回答有关monad的问题时所说的,但我听说Erik Meijer在其他关于LINQ和Rx的视频中这样说.(简单地说,Erik Meijer是创建LINQ和Rx的人)

我想知道如何用SelectMany实现一些最常用的LINQ函数? 暂时忽略性能,让我们专注于优雅和简洁.

  • 哪里
  • 选择
  • 第一
  • 以(N)
  • TakeWhile
  • 通过...分组
  • 排序依据
  • 压缩
  • 其他...

c# linq functional-programming system.reactive

15
推荐指数
1
解决办法
612
查看次数

Roslyn中的简单代码完成示例

我想开始在Roslyn中完成代码,但找不到任何简单的示例来说明如何完成代码.

什么是一个很好的例子来完成这个代码,以便我可以获得所有可能的完成项目(AKA智能感知或CTRL +空间完成)caretIndex

static void Main(string[] args)
{
    var code = @"
    using System;
    public class Test
    {
        public void TestMethod()
        {
            var now = DateTime.Now;
            now.
        }
    }";
    Console.WriteLine(code);

    var st = SyntaxTree.ParseText(code);
    var caretIndex = code.IndexOf("now.") + 4;

    //how to get possible code completions at caret index? (Intellisense)
}
Run Code Online (Sandbox Code Playgroud)

c# code-completion roslyn

15
推荐指数
1
解决办法
7408
查看次数

如何在统一的XML配置中将一个单例注册到不同的接口?

下面解释如何在代码中执行此操作: Unity将两个接口注册为一个单例

_container.RegisterType<EventService>(new ContainerControlledLifetimeManager());
_container.RegisterType<IEventService, EventService>();
_container.RegisterType<IEventServiceInformation, EventService>();

bool singleton = ReferenceEquals(_container.Resolve<IEventService>(),   _container.Resolve<IEventServiceInformation>());
Run Code Online (Sandbox Code Playgroud)

如何在XML配置中执行此操作?

.net c# unity-container

8
推荐指数
1
解决办法
4974
查看次数

将大量可观察量聚合为新的可观察量

比方说,我有1000个观察者.现在我想将所有事件聚合到一个新的observable中,一旦所有其他事件发送了一个事件,它就会触发OnNext.什么是使用Rx做到这一点的最佳方法?

更新:在Rx论坛上有一些很棒的反馈,尤其是Dave Sexton.他展示了如何创建一个带有多个observable的Zip扩展方法:http://social.msdn.microsoft.com/Forums/en-US/rx/thread/daaa84db-b560-4eda-871e-e523098db20c/

.net c# system.reactive

6
推荐指数
1
解决办法
886
查看次数

使用Task.ContinueWith创建执行队列?

我有几个我想在后台执行的操作,但它们必须一个接一个地同步执行.

我想知道使用Task.ContinueWith方法实现这一点是否是个好主意.你预见到这有什么问题吗?

我的代码看起来像这样:

private object syncRoot =new object();
private Task latestTask;

public void EnqueueAction(System.Action action)
{
    lock (syncRoot)
    {
        if (latestTask == null)
            latestTask = Task.Factory.StartNew(action);
        else
            latestTask = latestTask.ContinueWith(tsk => action());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# task task-queue

6
推荐指数
2
解决办法
7854
查看次数

如何根据事件中的条件完成Rx Observable

我有一个我无法控制的事件为我提供了数据.eventArgs看起来像这样:

class MyEventArg {
  bool IsLastItem {get;}
  Data DataItem {get;}
}
Run Code Online (Sandbox Code Playgroud)

我使用Rx将此事件转换为IObservable.但是如果IsLastItem为真,我想完成observable.

任何优雅的想法?一种方法是通过我可以控制的主题来管道数据,以便在条件发生时设置OnComplete事件...

c# system.reactive

6
推荐指数
1
解决办法
8793
查看次数