Tag: .net

Lucene.Net最佳实践

什么是使用Lucene.Net的最佳做法? 或者我在哪里可以find一个很好的lucene.net使用示例?

为什么Diagnostics名称空间中的Process类?

为什么Process类是Diagnostics名称空间的一部分? 这是BCL的devise的一部分,让我不知道一段时间了。 我觉得这种方式是违反直觉的,我没有看到Process和例如Debug和Trace类之间的连接。

以编程方式跳过一个nunittesting

有没有一种方法让nunittesting结束并告诉testing运行者,应该考虑跳过/忽略,而不是成功或失败? 我的动机是,我有一些testing不适用于某些情况下,但是直到testing(或者灯具)开始运行才能确定。 很明显,在这种情况下,我可以从testing中回来,并允许它成功,但(一)这似乎是错误的,(二)我想知道testing已被跳过。 我知道[忽略]属性,但是这是编译。 我正在寻找一个运行时间,程序的等价物。 就像是: if (testNotApplicable) throw new NUnit.Framework.IgnoreTest("Not applicable"); 或者是以编程方式跳过testing只是错误? 如果是的话,我该怎么做?

如何在C#中使用TransactionScope?

我正在尝试使用TransactionScope,但不断得到下面的exception。 该应用程序运行在不同于数据库的机器上,如果这很重要的话。 我正在使用Sql Server 2005。 “分布式事务pipe理器(MSDTC)的networking访问已被禁用,请使用组件服务pipe理工具在MSDTC的安全configuration中启用DTC进行networking访问。 using (TransactionScope tsTransScope = new TransactionScope()) { //Do stuff here tsTransScope.Complete(); } 编辑 我根据反馈做出了一些反应。 现在我得到这个错误: {"Error HRESULT E_FAIL has been returned from a call to a COM component."} {"Communication with the underlying transaction manager has failed."} 解决scheme我认为接受的答案确定了我所得到的最初的问题。 第二个错误似乎是特定于entity framework。 我会张贴另一个问题。 以下是客户端的属性: 客户端http://www.portnine.com/datahttp://img.dovov.comMisc/client.jpg 以下是服务器上的属性: 服务器http://www.portnine.com/datahttp://img.dovov.comMisc/server.jpg

确保事情在WPF的UI线程上运行

我正在构build一个WPF应用程序。 我正在做一些与服务器端的asynchronous通信,我在客户端使用Prism的事件聚合。 这两件事情都会导致产生新的线程,而不是UI线程。 如果我试图在这些callback和事件处理程序线程上执行“WPF操作”,那么世界将会崩溃,现在它已经开始了。 首先,我遇到了问题,尝试在服务器的callback中创build一些WPF对象。 我被告知该线程需要在STA模式下运行。 现在我试图在Prism事件处理程序中更新一些UI数据,并告诉我: 调用者不能访问此线程,因为不同的线程拥有它。 所以; 什么是在WPF中正确使用的关键? 我已经阅读了这篇MSDN文章中的WPF Dispatcher。 我开始明白了,但我还不是巫师。 当我需要运行一些我不确定的东西时,总是使用Dispatcher.Invoke的关键是在UI线程上调用吗? 如果它实际上是在UI线程上调用,那么它是否重要?我仍然使用Dispatcher.Invoke? Dispatcher.Invoke =同步。 Dispathcher.BeginInvoke =asynchronous? 请问Dispatcher.Invoke请求UI线程,然后停下来等待呢? 这是不好的做法和风险较低的应对scheme? 我怎样才能得到调度员? 请问Dispatcher.CurrentDispatcher总是给我代表UI线程的调度程序? 会不会有一个以上的Dispatcher,或者是“Dispatcher”与应用程序的UI线程基本相同? 和BackgroundWorker有什么关系? 我什么时候用这个呢? 我认为这总是asynchronous? 一切运行在UI线程(通过被调用)运行在STA公寓模式? 也就是说,如果我有需要在STA模式下运行的东西 – Dispatcher.Invoke是否足够? 任何人想为我清理的东西? 任何相关的build议,等等? 谢谢!

为什么在generics类中重复嵌套types的字段声明会导致巨大的源代码增加?

场景是非常罕见的,但很简单:您定义了一个generics类,然后创build一个嵌套类,它从外部类inheritance,并在嵌套内定义一个关联字段(自我types)。 代码片段比描述更简单: class Outer<T> { class Inner : Outer<Inner> { Inner field; } } IL反编译后,C#代码如下所示: internal class Outer<T> { private class Inner : Outer<Outer<T>.Inner> { private Outer<Outer<T>.Inner>.Inner field; } } 这似乎是公平的,但是当你改变字段的types声明时,事情变得更加棘手。 所以当我更改字段声明 Inner.Inner field; 反编译之后,这个字段将如下所示: private Outer<Outer<Outer<T>.Inner>.Inner>.Inner field; 我明白,这个阶级的“嵌套”和inheritance不太相称,但是我们为什么要观察这样的行为呢? Inner.Inner types声明已经改变了types? Inner.Inner 和 Inner types在这种情况下有所不同? 当事情变得非常棘手 您可以在下面看到反编译的源代码 。 它真的很大,总共有12159个符号。 class X<A, B, C> { class […]

用Dapper获取UTC时间作为UTC

我正在使用Dapper将我的实体映射到SQL Server CE。 如果我用Kind=Utc保存DateTime ,当我读到它时,我得到了Kind=Unspecified的DateTime ,这会导致所有types的问题。 例: var f = new Foo { Id = 42, ModificationDate = DateTime.UtcNow }; Console.WriteLine("{0} ({1})", f.ModificationDate, f.ModificationDate.Kind); connection.Execute("insert into Foo(Id, ModificationDate) values(@Id, @ModificationDate)", f); var f2 = connection.Query<Foo>("select * from Foo where Id = @Id", f).Single(); Console.WriteLine("{0} ({1})", f2.ModificationDate, f2.ModificationDate.Kind); 这段代码给出了以下输出: 20/09/2012 10:04:16 (Utc) 20/09/2012 10:04:16 (Unspecified) 我知道我应该使用DateTimeOffset […]

为什么代表参考types?

关于接受答案的快速注解 :我不同意Jeffrey答案的一小部分,即由于Delegate必须是参考types,因此所有代表都是参考types。 (事实上​​,多级inheritance链排除了值types是不正确的,例如,所有枚举types都从System.Enuminheritance,而System.Enuminheritance自inheritance自System.Object System.ValueType , 所有引用)然而,我认为从根本上说,所有代表实际上不仅仅inheritance自Delegate而且来自MulticastDelegate是这里的关键实现。 正如Raymond在他的回答中指出的那样 ,一旦你承诺支持多个订阅者,那么考虑到在某个地方需要一个数组,对于委托本身不使用引用types是毫无意义的。 查看底部的更新。 我一直觉得奇怪,如果我这样做: Action foo = obj.Foo; 我每次都创build一个新的 Action对象。 我相信这个代价是微不足道的,但是它涉及内存的分配,以便以后被垃圾收集。 鉴于代表本质上是不变的,我想知道他们为什么不能成为价值types? 那么像上面那样的一行代码只会产生一个简单的分配给堆栈上的内存地址*。 即使考虑匿名function,似乎(对我 )这将工作。 考虑下面的简单例子。 Action foo = () => { obj.Foo(); }; 在这种情况下, foo确实构成closures ,是的。 在很多情况下,我想这确实需要一个实际的引用types(例如当局部variables被closures并在闭包中被修改时)。 但在某些情况下,它不应该。 例如,在上面的例子中,似乎支持封闭的types可能是这样的: 我收回了我原来的观点。 下面的确需要成为一个引用types(或者: 不需要 ,但是如果它是一个struct它将会被装箱)。 所以,忽略下面的代码示例。 我留下它只提供回答的上下文特别提到它。 struct CompilerGenerated { Obj obj; public CompilerGenerated(Obj obj) { this.obj = obj; } […]

Enumerable.Single的错误实现?

我通过reflection器在Enumerable.cs中遇到了这个实现。 public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate) { //check parameters TSource local = default(TSource); long num = 0L; foreach (TSource local2 in source) { if (predicate(local2)) { local = local2; num += 1L; //I think they should do something here like: //if (num >= 2L) throw Error.MoreThanOneMatch(); //no necessary to continue } […]

genericsNOT约束在T:!IEnumerable

按照标题,是否有可能在c#4中声明types – 否定约束?