.NET 4.0的β2已经介绍的的IObservable和IObserver接口.
与传统的.NET事件相比有哪些优势?这不是解决同样的问题吗?
我看起来很难复制,但不管它看起来多么基本,都要问下面的内容,让它一劳永逸地清楚!
在使用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
我正在尝试使用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)
这可行并且可能更好(除非有人关心指出为什么以前的方法更好),但是有人可以确认这是一个合适的事情,希望引用一些具有权威性的东西吗?
最近我正在学习CQRS,并希望改变我的系统以使用事件采购模式.
但我发现在.Net平台上,有两个Event Store实现.
这两个实现让我很困惑 - 有人可以解释一下它们之间的主要区别.
如何创建简单的依赖关系解析器,不使用任何内置或库,如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) 我有一个.NET库,作为对象模型的一部分将发出某些事件的通知.
在我看来,事件的主要优点是初学者的可接近性(以及某些消费环境中的简单性),主要的负面因素是它们不可组合,因此如果你想做任何有趣的事情而不写代码丛林.Observable.FromEvent
正在解决的问题的本质是事件流量不会特别频繁或大量(它肯定不会尖叫RX),但绝对没有要求支持4.0之前的.NET版本[因此我可以使用内置IObservable接口,System.Reactive不会对消费者造成任何重大依赖].我感兴趣的是一些一般原则一些特定的具体原因,更喜欢IObservables在event从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而不是事件属于同一类别.
我有一个TeamCity 7构建配置,它几乎只是.ps1使用各种TeamCity参数调用脚本.
我希望这可能是一个简单的设置问题:
脚本
文件
脚本文件
%system.teamcity.build.workingDir%/ Script.ps1
脚本执行模式
使用"-File"参数执行.ps1脚本
脚本参数
%system.teamcity.build.workingDir%-OptionB%BuildConfigArgument %% BuildConfigArg2%
然后我会期待:
exit具有非0错误级别的脚本我希望构建失败(也许这不是惯用的PS错误管理 - 只有.ps1只能通过没有异常来报告成功吗?)问题:它不起作用.它应该如何工作?有什么东西我做错了,我可以通过选择不同的选项来解决这个问题吗?
我想加载根实体并急切加载它的所有子集合和聚合成员.
一直试图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)
我可以使用多个查询或类似的东西来存档吗?
此外,这种方法不会导致数据库中不必要的巨大结果集吗?
有什么建议?
我正在尝试使用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测试运行器.