Tag: .net 4.0

是否可以使用plinq ForAll批量插入数据库?

我这样做: entities.AsParallel().ForAll(o => repository.Insert(o)); 这很好,我会有更多的表现吗?

在xaml中按钮单击触发器上设置按钮内容

我想在XAML中使用触发器设置按钮内容,而无需编写代码: 每次点击按钮,内容都应该更改:首次点击按钮,按钮内容=“嗨”,第二次点击,按钮内容=“再见”,第三次点击,按钮内容=“嗨”。 所以它适用于将按钮内容设置为Bye,但是如何在下一次单击时将其设置回Hi? 我也不确定这是否是设置触发器的最有效方法,如果你有更好的解决方案,请随意。

抽象类不能用c#封装?

我在某处读到了 “抽象和密封修饰符相当于一个静态的类” 我也发现了 “当你声明一个静态类时,编译器在内部标记类抽象并密封,并在IL代码中创建一个私有构造函数” 所以,我决定这样做: static class A { public static void test() { Console.WriteLine(“test”); } } 现在,类“A”不能被inheritance或实例化。 因此,让我们使用abstract编写一个class B来防止实例化并使用sealed来防止inheritance。 但是,这种方法失败了。 这相当于 public abstract sealed class B { private B() { } public void test() { Console.WriteLine(“test”); } } But I recieve an error stating “error CS0418: B’:抽象类不能被密封或静态”。 任何想法为什么这是不可能的? 提前感谢您的回答。

如何更改ComboBox的选定项目的ForeColor?

是否可以更改所选(不是下拉!)项目的外观? combobox.ForeColor仅将所有项目的文本颜色更改为下拉列表。 编辑:变种是beelow,我们是 public static void CBoxDrawItem(object sender, DrawItemEventArgs args) { var box = sender as ComboBox; if (box == null || args.Index = box.Items.Count) return; e.DrawBackground(); var data = box.Tag as ControlData; var color = (args.State & DrawItemState.ComboBoxEdit) == 0 || data == null || !data.IsInDefaultState ? e.ForeColor : GetDefaultColor(e.ForeColor); using (var brush = […]

发布版本中的nunit:“公共语言运行时检测到无效程序。”

我将软件从vs2008 / .net 3.5升级到vs2010 / .net 4.0。 所有第三方库(最相关:nhibernate 2.1.2或3.0.0,nunit 2.5.2)仍然使用vs2008进行编译。 当我运行我们软件的调试版本的unit testing时,一切正常。 在发布版本中,nunit报告228个测试中的33个的exception: System.InvalidProgramException : Common Language Runtime detected an invalid program. 对于nunit-console和Resharper 5.0测试运行器,它总是在相同的测试中发生。 当我使用Resharper“debug unit-tests”命令运行它们时,所有测试都通过。 无论是单独运行还是批量运行,都没有区别。 exception总是发生在nhibernate查询调用附近,但我不能肯定地说,因为发布构建堆栈跟踪有点稀疏。 它不依赖于nhibernate字节码生成器,对于castle和linfu也会出现相同的exception。 有谁知道如何调试这个? 编辑:删除Spring.NET对此问题没有影响。 编辑:当我将release config debug输出切换为full而不是pdb并停用优化代码复选框时,exception消失。 这两个设置都是必需的,如果我只改变其中一个,那么bug仍然存在。 但是,如果我只更改一个,则会有一组不同的测试失败。 所有类库都是针对Any CPU编译的。

强制protobuf-net忽略IEnumerable / ICollection接口

我怎么能得到protobuf-net的v2来忽略我的类实现ICollection,IEnumerable等的事实? 对于这种特殊情况,我只希望标记为[ProtoMember]的字段被序列化。 我目前正在使用protobuf-net v1转换为使用v2。 我有一个特殊的结构,由于更改,现在正在序列化错误。 它看起来像下面这样: [ProtoContract] public class FileTree : ICollection, IEnumerable, IEnumerable, INotifyCollectionChanged, INotifyPropertyChanged { private FileTreeNode _Root; [ProtoMember (1)] public FileTreeNode Root { get { return _Root; } set { _Root = value; } } } 编写FileTree类是为了将像“C:\ happy.txt”“C:\ history.txt”这样的文件路径折叠成更像 “C:\h” └─── “appy.txt” └─── “istory.txt” 该结构消除了路径串中的冗余。 所以,我真的不希望通过IEnumerable函数序列化FileTree类,因为它只是存储为“C:\ happy.txt”,“C:\ history.txt”等。现在,在序列化中对于FileTree对象,每个路径都将完全打印出来。 编辑:我要提到的最后一件事 – 我在FileTree中有一个On_Deserialization函数,它用[ProtoAfterDeserialization]标记。 我在函数中放了一个断点,但它没有被击中。 […]

在C#中超过100k +字符串的快速动态模糊搜索

假设它们是预先加载的股票代码,键入文本框。 我正在寻找可以复制的代码,而不是要安装的库。 这是受这个问题的启发: 是否有为C#编写的模糊搜索或字符串相似性函数库? Levenstein距离算法似乎运行良好,但计算需要时间。 当用户输入额外的字母时,是否需要重新运行查询这一事实是否有任何优化? 我有兴趣最多显示每个输入的前10个匹配项。

Singleton中的结构图返回多个实例

我使用命名实例为同一个接口注册了5个派生类。 所有这些类都注册为Singleton For().Singleton().Use().Named(“Derived1”); For().Singleton().Use().Named(“Derived2”); For().Singleton().Use().Named(“Derived3”); 有一个静态类根据输入解析实例。 但是我观察到每次调用ObjectFactory.GetInstance都会在每个请求上返回新实例而不是Singleton。 应用程序中也没有线程。 知道为什么会这样吗? 编辑: 静态解决方案助手会导致任何问题吗? 这是我解析实例的方式。 Singleton在示例应用程序中正常工作,但它在我的机器上不起作用。 要添加更多细节 – 该项目是MVC Web API,我正在本地IIS上进行测试。 我很肯定在应用程序中没有用户创建的线程。 public static class Resolver { public static IBaseInterface GetHelper(string inputParam) { if inputParam is “Case1” return ObjectFactory.GetInstance(“Derived1”) //Similarly for other instances } }

线程安全事件调用

触发事件时避免竞争条件(在multithreading应用程序中)的常见做法是: EventHandler temp = SomeEvent; if (temp != null) temp(e); “Remember that delegates are immutable and this is why this technique works in theory. However, what a lot of developers don’t realize is that this code could be optimized by the compiler to remove the local temp variable entirely. If this happens, this version of […]

你如何在C#中获得原始TCP数据包?

我想收到原始TCP数据包,然后以相同的工作负载发送回来。 它应该看起来像这样: void OnPacketReceived(TcpPacket p) { byte [] body = p.GetBody(); } 注意:我需要TCP数据包而不是以太网帧。