小编Jac*_*eja的帖子

使用 F# 记录对象更改的方法

有没有一种聪明的方法来记录对 F# 中的对象所做的更改?

我一直在研究 F# 作为构建通过网络复制自身的对象模型的一种方式。我需要解决的一项任务是如何检测对对象所做的更改,以便我只能将更改发送给客户端

注:我在寻找答案,其他不是“执行INotifyPropertyChanged”或“做一些事情,可以很容易地在C#来完成”。如果这是在 F# 中解决问题的唯一方法,那么 F# 不是我正在寻找的工具。

为什么是 F#?因为我对在 C# 中实现这种状态观察者模式的方式并不满意。因此,我正在研究是否有一些优雅的方式以动态语言实现它,从 F# 开始。

f#

4
推荐指数
1
解决办法
618
查看次数

Autofac Resolve <IEnumerable <T >>()返回空列表

我已经阅读了很多Autofac文档/ wiki,表明我可以通过执行如下所示的简单操作获得所有已注册类型的列表:

var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
                .AssignableTo<IPersistedModel>();
var container = builder.Build();
var allTypes = container.Resolve<IEnumerable<IPersistedModel>>();
Run Code Online (Sandbox Code Playgroud)

问题是allTypes出现空白.

在调试器中,我可以看到容器内部有7种匹配类型甚至IPersistedModel数组...但它们不会在Resolve()上返回.

我错过了什么?

.net c# autofac

4
推荐指数
1
解决办法
2627
查看次数

创建ViewModel:在模型数据可用之前或之后执行此操作?

我有一个WPF应用程序,从数据源加载数据.

在加载某些数据之前,无需显示任何内容.

我的问题是:

  • 在任何数据可用之前创建V和VM; 一旦可用,就在VM中设置数据
  • 一开始只创建V; 等到数据可用然后创建注入数据的VM
  • 只有数据可用时才创建V和VM

wpf mvvm

3
推荐指数
1
解决办法
2090
查看次数

为什么mercurial(hg)将我的Visual Studio解决方案(.sln)视为二进制?

我收到消息"文件或差异未显示:文件是二进制".

为什么mercurial(hg)将我的visual studio解决方案(.sln)视为二进制?

我该如何阻止它?

谢谢

mercurial visual-studio

3
推荐指数
1
解决办法
254
查看次数

如何在不触及数据库的情况下获取独立关联的外键值?

我正在使用独立关联(延迟加载)来访问我的代码优先模型中的相关实体,例如

public class Aaa {
  public int AaaId {get;set;}
  public string SomeValue {get;set;}
}

public class Bbb {
  public int BbbId {get;set;}
  public string SomeValue {get;set;}
  public virtual Aaa MyIndependentAssociation {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

但我想知道如何在MyIndependentAssociation不实际加载记录的情况下访问外键值。

我假设Aaa_AaaId当我Bbb从数据库中检索实体时实际加载了该值(无论如何,根据实体表上的调试可视化工具)。

我如何访问该值(除了将外键关联添加到我的模型中)?

.net entity-framework entity-framework-5

3
推荐指数
1
解决办法
686
查看次数

如何从所有枚举类型中排除某些枚举

我试图从某些枚举类型的值集中排除某些枚举值,例如Unknown和。Uninitialized

我可以看到它Enums是使用给定类型EnumGenerator的所有可能Enum值的集合以循环方式生成的Enum

基于该代码,我的第一个想法是构建一个ISpecimenBuilder检查Type.IsEnum并执行context.Resolve(request)直到直到Resolve返回不在排除列表中的值的对象。

问题是这给了我递归错误。在检查了源代码之后,我明白了原因-如果构建器处理了一个请求,然后Resolve再次用相同的请求调用另一个,您将陷入无限循环。

但是由于它EnumGenerator是不可扩展的,而且我无法弄清楚如何拦截构建链,因此我很困惑如何解决此问题。

c# autofixture

3
推荐指数
1
解决办法
815
查看次数

什么是IObservable.Subscribe(IObserver <T>观察者)重载?

当我写.Subscribe表达式时,我经常发现Resharper为我选择了以下重载,位于mscorlib,Version = 4.0.0.0:

namespace System
{
  public interface IObservable<out T>
  {
    IDisposable Subscribe(IObserver<T> observer);
  }
}
Run Code Online (Sandbox Code Playgroud)

这看起来与大多数重载非常不同,这些重载Action都来自mscorlib,而不是System.Reactive.*我期望大多数Reactive的东西.

这次超载有什么作用?该如何使用?怎么IObserver<T>涉及Action?为什么mscorlib会出现这种单一过载?

.net system.reactive

3
推荐指数
1
解决办法
1071
查看次数

Autofixture:如何在不使用泛型方法的情况下创建类型实例

Autofixture 能够使用该Fixture.Create<T>()方法创建任何类型的实例。

但是我需要在运行时创建一个类型。默认情况下,非泛型Fixture.Create()需要一个“种子”,这不是我想要的。

如何在运行时创建给定类型的实例?

autofixture

2
推荐指数
1
解决办法
1580
查看次数

如何使用Rx通过异步WCF服务轮询图像

我有一个异步WCF服务,它采用"URI"并返回一个图像(作为流).

我想要做的是:

  • 如果没有创建,则确保存在有效的WCF通道
  • 进行异步服务调用
  • 成功时将图像保存到成员变量
  • 如果我收到异常,请关闭频道
  • 无论是失败还是成功,等待200ms然后重新开始(永久循环或直到取消)

到目前为止,我已经想出了这个怪物:

    private void PollImage(string imageUri)
    {
        const int pollingHertz = 1;
        const int millisecondsTimeout = 1000 / pollingHertz;
        Thread.Sleep(millisecondsTimeout);

        if (_channel == null)
        {
            _channel = _channelFactory.CreateChannel();
        }

        var getImageFunc = Observable.FromAsyncPattern<string, Stream>
                                  (_channel.BeginGetImage, _channel.EndGetImage);

        getImageFunc(imageUri)
            .Finally(() => PollImage(imageUri))
            .Subscribe(
                stream => UpdateImageStream(imageUri, stream),
                ex =>
                    {
                        Trace.TraceError(ex.ToString());
                        ((ICommunicationObject) _channel).CloseOrAbort();
                        _channel = null;
                    });
    }
Run Code Online (Sandbox Code Playgroud)

我真的很想学习Rx但是每次尝试都会让我不知所措.

有人愿意给我一些指示吗?谢谢

.net system.reactive

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

MSBUILD:如何解析解决方案文件以获取项目路径

使用 MSBUILD 时如何从解决方案中获取项目文件列表?

例如从 .sln 获取所有 .csproj。

msbuild

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