使用MemoryStream写出XML

我注意到有两种不同的方法可以将数据写入XML文件(为简洁起见,省略了error handling)。 第一种方法是构建XML文档,然后将XML保存到文件中: using (XmlWriter writer = XmlWriter.Create(fileName)) { writer.WriteStartDocument(true); writer.WriteStartElement(“parentelement”); writer.WriteEndElement(); writer.WriteEndDocument(); } 第二种方法是创建MemoryStream,然后将MemoryStream保存到文件中: XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; MemoryStream ms = new MemoryStream(); using (XmlWriter writer = XmlWriter.Create(ms, settings)) { writer.WriteStartDocument(true); writer.WriteStartElement(“parentelement”); writer.WriteEndElement(); writer.WriteEndDocument(); } using (FileStream fs = File.Open(fileName, FileMode.Create, FileAccess.Write)) { ms.WriteTo(fs); ms.Dispose(); } 我猜测使用MemoryStream的逻辑是确保在尝试保存文件之前可以构建XML文件。 在将条目添加到XML文件中时,MemoryStream方法是否会提供Atomic写入事件和/或防止写入问题? 任何人都可以解释这是否真的是必要的,或者只是一种过度的方法来为我的项目添加不必要的代码行?

带有“OR”子句的通用表达式树,用于每个提供的属性

我为IQueryable创建了一个通用的搜索扩展方法,使您可以搜索单个属性以查看其中是否包含搜索词。 http://jnye.co/Posts/6/c%23-generic-search-extension-method-for-iqueryable 我现在想让用户选择多个属性在每个属性中进行搜索,如果任何属性包含文本,则匹配。 代码: 用户输入以下代码以执行此搜索: string searchTerm = “Essex”; context.Clubs.Search(searchTerm, club => club.Name, club => club.County) //Note: If possible I would rather something closer to the following syntax… context.Clubs.Search(club => new[]{ club.Name, club.County}, searchTerm); // … or, even better, something similar to this… context.Clubs.Search(club => new { club.Name, club.County}, searchTerm); 这将返回任何名为“Essex”的高尔夫俱乐部或郡。 public static IQueryable Search(this […]

将所有treeView父级和子级复制到另一个treeView c#WinForms

我试图使用以下代码将树视图(完全)的整个树(完全所有节点)复制到另一个树视图: TreeNodeCollection myTreeNodeCollection = treeView1.Nodes; TreeNode[] myTreeNodeArray = new TreeNode[treeView1.Nodes.Count]; treeView1.Nodes.CopyTo(myTreeNodeArray, 0); treeView2.Nodes.AddRange(myTreeNodeArray); 但这不允许我这样做,它要求删除源treeview中的节点或使用它克隆! 我怎样才能做到这一点? 我不希望我的源treeview在这个过程中丢失任何东西。 **更新**好的我发现了一个复杂的代码(对我来说!!)但我怎么能用它? public static T DeepTreeCopy(T obj) { object result = null; using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; result = (T)formatter.Deserialize(ms); ms.Close(); } return (T)result; }

在服务器端以编程方式更改报告的SSRS数据源

今天,对于每个客户,我们部署相同的SSRS报告文件夹和数据源文件夹。 这些文件夹之间的区别是每个文件夹的名称和数据源的连接字符串。 我们正在使用Report Server 2008 R2。 在报表呈现之前,是否可以只维护一个报表和数据源文件夹并以编程方式更改其服务器端的连接字符串? 如果没有,是否可以通过更改报告中的某些逻辑来实现? 今天我们使用“共享数据源”选项。

我可以将WCF DataContract添加到复杂类型吗?

我有一个复杂的数据类型,包括许多函数,以及通常的get和get方法。 如果我可以使用WCF,我的生活会变得相当容易,所以我的客户也可以使用这种数据类型。 我 忽略所有操作,仅在需要的地方放置[DataMemeber] 。 将有问题的类放在共享库程序集中,以供客户端和服务器访问。 谢谢,罗伯托 PS。 我意识到这个问题的措辞可能不尽如人意。

不能取给定表达式C#指针的地址

在不安全的上下文中考虑以下代码: string mySentence = “Pointers in C#”; fixed (char* start = mySentence) // this is the line we’re talking about { char* p = start; do { Console.Write(*p); } while (*(++p) != ‘\0’); } Console.ReadLine(); 这很好用。 根据http://msdn.microsoft.com/en-us/library/f58wzh21(v=VS.100).aspx我应该能够替换我标记的行 fixed(char* start = &mySentence[0]) 但不幸的是VS给了我以下错误。 无法获取给定表达式的地址 错误在我身边吗? VS.NET 2010 Premium。

如何在asp.net中的gridview中创建链接

我正在尝试创建一个具有gridview的网页。 这个gridview应该有如下链接 http://localhost/Test.aspx?code=123 当用户点击gridview中其中一行的链接时,它将打开一个空白页面并显示一些结果。 这是我如何将数据绑定到gridview但我不知道如何设置链接 protected void Page_Load(object sender, EventArgs e) { string firma_no = logoFrmNr.ToString().PadLeft(3, ‘0’); string active_period = logoFrmPeriod.PadLeft(2, ‘0’); SqlConnection conn = new SqlConnection(conStr); string selectSql = @”SELECT LOGICALREF, CODE , DEFINITION_ , FROM LG_CLFLINE”; SqlCommand cmd = new SqlCommand(selectSql, conn); DataTable dt = new DataTable(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); […]

授予远程用户(非管理员)使用WMI和C#在命名空间cimv2中枚举Win32_Service中的服务的能力

我正在创建一个监视狗服务,它将监视各种远程服务器上的其他服务(所有服务都位于同一个域中)。 我用来连接远程服务器的用户不是管理员。 当我尝试枚举Win32_Service类中的服务时,我得到一个拒绝访问错误。 我已将用户的“远程启用”和“启用帐户”权限提供给WMI控件中的Root \ CIMV2命名空间。 我可以使用以下代码连接到服务器。 对象ServiceListItem只是一个包含服务器名称和服务名称的简单类: SecureString secureString = new SecureString(); foreach ( char c in “password” ) { secureString.AppendChar( c ); } ConnectionOptions connectionOptions = new ConnectionOptions(); connectionOptions.Username = “domain\\user”; connectionOptions.SecurePassword = secureString; foreach ( ServiceListItem service in _serviceList ) { ManagementScope managementScope = new ManagementScope(); managementScope = new ManagementScope( String.Format( @”\\{0}\root\cimv2″, […]

Mono.Cecil可以修改已经加载在AppDomain中的代码吗?

我想在运行时向某个类添加一些行为。 我知道如何在运行时使用Reflection.Emit进行子类化,但这还不够,根据一些外部配置,我需要在类型T上的方法中注入操作码,以便从中inheritance的所有类自动获得此行为。(我无法使用.NET分析API) 可以用Mono.Cecil完成这样的事吗? 如果不能修改加载的程序集上的代码,那很好如果我可以在加载程序集之前进行修改然后将修改后的程序集加载到内存中,但我不知道如何控制程序集加载。

Visual Studio 2017中源文件的默认编码是什么

视觉工作室2017似乎总是将新文件保存为UTF8-BOM。 它似乎与早期版本的visual studio不同,但我找不到任何文档。 还有一个选项“高级保存选项\编码”,它允许更改VS2017中缺少的新保存文件的编码。 问题: 是否在VS2017中使用UTF8-BOM编码保存所有文件类型 是否可以在VS2017中配置新文件的编码 VS2017会改变没有UTF8-BOM的“旧”文件的编码 是否有关于此主题的任何文档