小编Rub*_*ink的帖子

.NET Rx优于经典事件的优势?

.NET 4.0的β2已经介绍的IObservableIObserver接口.

与传统的.NET事件相比有哪些优势?这不是解决同样的问题吗?

.net events reactive-programming system.reactive

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

log4net初始化

我看起来很难复制,但不管它看起来多么基本,都要问下面的内容,让它一劳永逸地清楚!

在使用64位W7上的VS28KSP1上的log4net版本1.2.10.0的全新控制台应用程序中,我有以下代码: -

using log4net;
using log4net.Config;

namespace ConsoleApplication1
{
    class Program
    {
        static readonly ILog _log = LogManager.GetLogger(typeof(Program));
        static void Main(string[] args)
        {
            _log.Info("Ran");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在我app.config,我有:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Program.log" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="1MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%username] %date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> …
Run Code Online (Sandbox Code Playgroud)

.net log4net initialization xmlconfigurator log4net-configuration

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

MSBUILD/csc:处理x64 mscorlib警告的最简洁方法1607

我正在尝试使用VS08SP1的默认项目系统以显式x64模式调用C#编译(与之不同AnyCpu).当我明确地将模块标记为x64时,我得到一个:

警告CS1607:程序集生成 - 引用程序集"mscorlib.dll"针对不同的处理器

删除它的一种方法是使用/nowarn:1607. 根据我的研究,这样做在实践中没有问题.如果有人能够遇到他们遇到过的现实问题,请随时回答.

但是,这只是感觉不对!所以我使用的另一种方法是做/nostdlib+,然后添加<Reference>一个硬编码<HintPath>到显式64位mscorlib:

<Reference Include="mscorlib">
  <HintPath>$(windir)\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

这可行并且可能更好(除非有人关心指出为什么以前的方法更好),但是有人可以确认这是一个合适的事情,希望引用一些具有权威性的东西吗?

msbuild 64-bit warnings csc mscorlib

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

NEventStore和GetEventStore有什么区别

最近我正在学习CQRS,并希望改变我的系统以使用事件采购模式.

但我发现在.Net平台上,有两个Event Store实现.

  1. NEventStore(前身为JOliver EventStore)
  2. EventStore(来自GetEventStore.com)

这两个实现让我很困惑 - 有人可以解释一下它们之间的主要区别.

cqrs event-store ncqrs get-event-store

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

简单的依赖性解析器

如何创建简单的依赖关系解析器,不使用任何内置或库,如Autofac,Ninject等.

这是我的面试问题.

我写了这个简单的代码,他们说它看起来不太好.它就像非常难以编码的想法.

public interface IRepository { }
interface IDataProvider
{
    List<string> GetData();
}
public class SQLDataProvider : IDataProvider
{
    private readonly IRepository _repository { get; set; }
    public SQLDataProvider(IRepository repository)
    {
        _repository = repository;
    }
    public List<string> GetData()
    {
        return new List<string> { "" };
    }
}
public class MockDataProvider : IDataProvider
{
    public List<string> GetData()
    {
        return new List<string> { "" };
    }
}
class Program
{
 static void Main(string[] args)
 {
    string targetClass = "SQLDataProvider";
    //Here i …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns dependency-injection

27
推荐指数
2
解决办法
2万
查看次数

在面向.NET 4+的库中公开通知时,IObservable是否应优先于事件

我有一个.NET库,作为对象模型的一部分将发出某些事件的通知.

在我看来,事件的主要优点是初学者的可接近性(以及某些消费环境中的简单性),主要的负面因素是它们不可组合,因此如果你想做任何有趣的事情而不写代码丛林.Observable.FromEvent

正在解决的问题的本质是事件流量不会特别频繁或大量(它肯定不会尖叫RX),但绝对没有要求支持4.0之前的.NET版本[因此我可以使用内置IObservable接口,System.Reactive不会对消费者造成任何重大依赖].我感兴趣的是一些一般原则一些特定的具体原因,更喜欢IObservablesevent从API设计的角度看小号虽然-无论在哪里,我的具体情况可能在坐event- IObservable频谱.

那么,问题是:

如果我选择最简单的东西并暴露一个event而不是一个IObservable

或者,重申:除了有做一个消费者Observable.FromEvent*能够撰写事件,是真的不是一个单一的理由,更喜欢一个IObservable比一个event的API中暴露的通知是什么时候?

IObservable用于非尖叫-RT内容或编码指南的项目的引用将是理想的但并不重要.


在@Adam Houldsworth的评论中提到的NB,我对.NET 4+库的API表面的具体内容感兴趣,而不是对我们这个时代代表更好的"默认架构"的意见调查: )

注意,在C#中的IObserver和IObservable中已经触及了这个问题,对于Observer vs Delegates,事件IObservable与普通事件或为什么我应该使用IObservable?.由于SRP违规,我提出的问题的方面没有在任何答复中得到解决.另一个略微重叠的问题是.NET Rx优于经典事件?.(使用IObservable而不是事件)[ 使用IObservable而不是事件属于同一类别.

.net c# events system.reactive

27
推荐指数
2
解决办法
2420
查看次数

.Net 4.5在Windows 7上运行的WebSocket服务器?

我知道Windows 7不支持.Net 4.5的ClientWebSocket类,但可以使用.Net 4.5 API创建在Windows 7上运行的WebSocket服务器吗?

为了让自己更清楚,根据这里这里,看起来甚至在Windows 7上也应该支持.Net 4.5 WebSocket实现的服务器端部分,但运行HttpListener并尝试使用开源WebSocket实现来访问它给我一个"Portocol不支持"的错误

.net windows-7 websocket .net-4.5

26
推荐指数
2
解决办法
2万
查看次数

如何在TeamCity PowerShell运行程序中传播错误

我有一个TeamCity 7构建配置,它几乎只是.ps1使用各种TeamCity参数调用脚本.

我希望这可能是一个简单的设置问题:

  • 脚本

    文件

  • 脚本文件

    %system.teamcity.build.workingDir%/ Script.ps1

  • 脚本执行模式

    使用"-File"参数执行.ps1脚本

  • 脚本参数

    %system.teamcity.build.workingDir%-OptionB%BuildConfigArgument %% BuildConfigArg2%

然后我会期待:

  • 如果我搞砸了我的论点并且脚本无法启动,则构建失败
  • 如果我的Script.ps1脚本抛出,则构建失败
  • 如果exit具有非0错误级别的脚本我希望构建失败(也许这不是惯用的PS错误管理 - 只有.ps1只能通过没有异常来报告成功吗?)

问题:它不起作用.它应该如何工作?有什么东西我做错了,我可以通过选择不同的选项来解决这个问题吗?

error-handling powershell teamcity

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

渴望用NHibernate加载儿童集合

我想加载根实体并急切加载它的所有子集合和聚合成员.

一直试图SetFetchMode在FluentNHibernate中使用它,但我在其中一个子集合中得到重复,因为我有3个级别的深度.DistinctRootEntityResultTransformer遗憾的是,只删除了根重复.

return Session.CreateInvoiceBaseCriteria(query, archived)
    .AddOrder(new Order(query.Order, query.OrderType == OrderType.ASC))
    .SetFetchMode("States", FetchMode.Eager)
    .SetFetchMode("Attestations", FetchMode.Eager)
    .SetFetchMode("AttestationRequests", FetchMode.Eager)
    .SetFetchMode("AttestationRequests.Reminders", FetchMode.Eager)
    .SetResultTransformer(new DistinctRootEntityResultTransformer())
    .List<Invoice>();
Run Code Online (Sandbox Code Playgroud)

我可以使用多个查询或类似的东西来存档吗?

此外,这种方法不会导致数据库中不必要的巨大结果集吗?

有什么建议?

nhibernate querying eager-loading

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

如何在xUnit.net测试中仅运行一次安装代码

我正在尝试使用Xunit设置我的测试.我要求删除测试文件夹开头的所有图像,然后每个方法都会调整一些图像大小,并将其输出的副本保存到文件夹中.该文件夹应该只清空一次,然后每个方法将自己的图像保存到该文件夹​​中.

当我使用时IUseFixture<T>,ClearVisualTestResultFolder在每次测试之前仍然会调用该函数,所以我最终只在文件夹中有一个图像.

public class Fixture
{
    public void Setup()
    {
        ImageHelperTest.ClearVisualTestResultFolder();
    }
}

public class ImageHelperTest : IUseFixture<EngDev.Test.Fixture>
{
    public void SetFixture(EngDev.Test.Fixture data)
    {
        data.Setup();
    }

    public static void ClearVisualTestResultFolder()
    {
        // Logic to clear folder
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我把ClearVisualTestResultFolder它放在构造函数中,它也会为每个测试方法调用一次.我需要在执行所有测试方法之前运行一次,我该如何实现?

如果重要,我使用ReSharper测试运行器.

c# asp.net xunit xunit.net

23
推荐指数
3
解决办法
2万
查看次数