如何用特定语言版本编译C#

假设我想向某人演示有关C#4.0和5.0中foreach之间的差异。 所以我写了我的代码片段: public static void Main() { string[] fruits = { “Apple”, “Banana”, “Cantelope” }; var actions = new List(); foreach (var fruit in fruits) { actions.Add(() => Console.WriteLine(fruit)); } foreach(var a in actions) { a(); } } 但无论我如何编译它,它总是像5.0 *一样工作 。 我已经尝试在csproj文件中设置语言版本(Build – > Advanced – > Language Version),我尝试在命令行上构建它: csc myProgram.cs /langversion:4 我不能让它以“旧”的方式工作。 有帮助吗? 如果您可以告诉我如何在命令行和Visual […]

消息泵和AppDomains

我有一个C#(FFx 3.5)应用程序,它将DLL作为插件加载。 这些插件加载在单独的AppDomain中(出于很多原因,这种架构无法更改)。 这一切都很好。 我现在需要从其中一个插件中显示一个Dialog。 请记住,我无法将对话框Form返回到主应用程序并将其显示在那里(当前基础结构不支持它)。 失败1 在我的DLL中,我创建了一个Form并称为Show。 对话框轮廓显示但没有绘制,它不响应鼠标事件。 我假设这是因为DLL在一个单独的AppDomain中,并且应用程序的消息泵以某种方式无法将消息发送到新表单。 失败2 在我的DLL中,我创建了一个Form并调用了ShowDialog,所有权利都应该为对话框创建一个内部消息泵。对话框显示并响应点击(万岁),但似乎主应用程序不再处理或调度Windows消息因为它退出绘画而不再响应鼠标事件。 由于某种原因,现在似乎主app的消息泵没有调度。 失败3 在我的DLL中,我创建了一个Form并调用了Application.Run。 这肯定会创建一个完整的第二个消息泵。 我得到了与失败2相同的行为 – 对话行为,但调用应用程序没有。 有关这里到底发生了什么的想法,以及如何从其他AppDomain的DLL显示对话框并让调用者和被调用者仍然响应并正确绘制?

如何在Windows Phone上更改C#中的本地化?

我有2种语言的资源文件,我的应用程序已经读取其中一种语言的值。 我希望能够在C#中更改我的应用程序的语言(使用其他资源文件),而不是在“设置”中更改整个手机的语言。 这可能吗? 如果是这样,怎么样?

Web Api模型绑定和多态inheritance

我问是否有人知道是否有可能将一个inheritance自抽象类的具体类传递给Web Api。 例如: public abstract class A{ A(); } public class B : A{ } [POST(“api/Request/{a}”)] public class Request(A a) { } 目前我已经环顾四周,大多数解决方案似乎都说使用TypeNameHandling会起作用。 JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); jsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto; 然而,事实并非如此。 我的模型也从控制台应用程序传递到webapi。 我已经读过,我可能能够反序列化json对象,在尝试了几次后,我认为这不会起作用。 我已经考虑过创建一个客户模型绑定器,但是我不想让我的应用程序变得更加复杂。 目前我inheritance了3个模型的抽象类,但将来可能会扩展它。 您可能会注意到添加自定义模型绑定器可能需要多个绑定器,除非有一种方法可以为所有类型的抽象类创建一个通用绑定器。 为了在我的控制台应用程序中进行扩展,我已经实例化了类b,然后将其传递给ObjectContent,然后发布到我的webapi item = B(); //serialize and post to web api MediaTypeFormatter formatter; JsonMediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); jsonFormatter.SerializerSettings.TypeNameHandling […]

如何构建可扩展的数据模型

我正在考虑使用NHibernate和Fluent NHibernate构建一个具有可扩展数据模型的电子商务应用程序。 通过拥有可扩展的数据模型,我可以定义一个Product实体,并允许应用程序中的用户使用包含自定义数据类型的不同数据类型的新字段/属性来扩展它。 示例:产品可以有一个附加字段,如:Size – int Color – string Price – ColoredImage的十进制集合 – 名称,图像(例如“Red”,red.jpg(二进制文件)) 另一个要求是能够通过这些附加/扩展字段过滤产品。 我该如何实现呢? 提前致谢。

可以真正取消/杀死sql server查询吗?

我想让用户能够取消正在运行的查询。 查询真的很慢。 (查询优化除此之外。)这主要是出于好奇。 MSDN说: 如果没有什么可以取消,则不会发生任何事情 但是,如果正在处理命令,并且尝试取消失败,则不会生成exception。 Cmd – SqlCommand DA – DataAdapter Conn – SqlConnection CurrentSearch – 线程 LongQuery – Singleton 这就是我所拥有的: var t = new Thread(AbortThread); t.Start(); void AbortThread() { LongQuery.Current.Cmd.Cancel(); LongQuery.Current.Cmd.Dispose(); LongQuery.Current.DA.Dispose(); LongQuery.Current.Conn.Close(); LongQuery.Current.Conn.Dispose(); LongQuery.Current.Cmd = null; LongQuery.Current.DA = null; LongQuery.Current.Conn = null; CurrentSearch.Abort(); CurrentSearch.Join(); CurrentSearch = null; } 我注意到CurrentSearch.Abort()是阻塞的,这就是为什么我把它包装在一个线程中,这可能意味着该线程仍在工作。 最后,除了这个我可以做什么来取消查询? 实际上是否可以从.NET取消这么长的查询?

使用reflection器创建VisualStudio项目

我有一个.exe应用程序,我想更好地理解 – 我可以在reflection器中看到它 有没有办法让reflection器用代码创建一个VS项目,以便我可以在Visual Studio中正确查看它?

获取WinNT组的成员列表

堆栈溢出有几个类似的问题,但不完全相同。 我想在win xp计算机上打开或创建一个本地组,并向其添加成员,域名,本地和众所周知的帐户。 我还想检查一个用户是否已经是一个成员,这样我就不会两次添加同一个帐户,并且可能会出现exception。 到目前为止,我开始将DirectoryEntry对象与WinNT://提供程序一起使用。 这样可以,但是我仍然坚持如何获得一个组成员列表? 有人知道怎么做吗? 或者提供比使用DirectoryEntry更好的解决方案?

列表简单组和计数?

我有一个非常简单的List设置,每个项目包含许多单个字符(IE将foreach控制到“a”“k”“p”等) 我想要做的是能够对项目进行分组并计算每个项目的数量,以便我得到类似于以下内容的输出: a – 2 t – 3 y – 3 有关最佳方法的任何提示吗? 我正在使用.Net 4,如果有任何帮助的话。

C#I / O – System.IO.File和StreamWriter / StreamReader之间的区别

假设我只对处理文本文件感兴趣,与StreamWriter相比,System.IO.File方法提供了哪些具体的优点或缺点? 是否涉及任何性能因素? 基本的区别是什么,在哪些情况下应该使用哪些? 还有一个问题,如果我想将文件的内容读入字符串并对其运行LINQ查询,哪个最好?