Tag: c# 3.0

在Generic类型参数之前,“out”是什么意思?

我在寻找GroupBy返回类型时看到了一种不熟悉的语法: public interface IGrouping : IEnumerable MSDN来源 我知道方法中有什么意思,但不是在generics界面中。 generics中的含义是什么?

我如何作为代表传递财产?

这是一个理论问题,我已经找到了解决问题的方法,这使我走上了不同的道路,但我认为这个问题仍然很有意思。 我可以像对待方法一样将对象属性作为委托传递吗? 例如: 假设我有一个数据读取器加载了数据,并且每个字段的值需要传递到已经检查过DBNull的不同类型的属性中。 如果试图获得单个字段,我可能会写如下: if(!rdr[“field1”].Equals(DBNull.Value)) myClass.Property1 = rdr[“field1”]; 但是,如果我说100个字段,那很快就会变得笨拙。 执行此操作的调用有两种方式可能看起来不错: myClass.Property = GetDefaultOrValue(rdr[“field1”]); //Which incidentally is the route I took 作为扩展方法,它看起来也很不错: myClass.Property = rdr[“field1”].GetDefaultOrValue(); 要么: SetPropertyFromDbValue(myClass.Property1, rdr[“field1”]); //Which is the one that I’m interested in on this theoretical level 在第二个实例中,属性需要作为委托传递才能进行设置。 所以问题分为两部分: 这可能吗? 那会是什么样的? [因为这只是理论上的,VB或C#中的答案对我来说同样可以接受] 编辑:这里有一些光滑的答案。 谢谢大家。

您在C#中制作或看到的哪些流畅的界面非常有价值? 他们真是太棒了?

如今,“流畅的界面”是一个相当热门的话题。 C#3.0有一些很好的function(特别是扩展方法)可以帮助你制作它们。 FYI,一个流畅的API意味着每个方法调用返回一些有用的东西,通常是你调用方法的同一个对象,所以你可以继续链接。 Martin Fowler在这里用Java示例讨论它。 这个概念就像这样: var myListOfPeople = new List(); var person = new Person(); person.SetFirstName(“Douglas”).SetLastName(“Adams”).SetAge(42).AddToList(myListOfPeople); 我在C#中看到了一些非常有用的流畅接口(一个例子是用于validation我在之前提出的早期StackOverflow问题中找到的参数的流畅方法。它让我感到震惊。它能够为表达参数validation规则提供高度可读的语法,并且另外,如果没有例外,它可以避免实例化任何对象!所以对于“正常情况”,开销非常小。这一小窍门在短时间内教会了我很多 。我想找到更多的东西像那样)。 所以,我想通过观察和讨论一些优秀的例子来了解更多。 那么, 你在C#中制作或看到的一些优秀的流畅界面,是什么让它们如此有价值? 谢谢。

我在哪里可以找到C#3的深度指南?

看来C#3在没有我注意的情况下打击了我,你能告诉我有关C#3的深度指南吗? 从lambda到linq,再到第三版语言引入的其他内容。 印刷书籍会很好,但在线指南会更好!

无法将类型为“System.Net.FileWebRequest”的对象强制转换为“System.Net.HttpWebRequest”

我在尝试上传到FTP时遇到上述错误。 但是,当我尝试从我的本地计算机运行此代码时,它给出了错误。 好心提醒。 这里我的代码如下: static void Main(string[] args) { var yourListOfFilePaths = Directory.GetFiles(filepath); using (ZipFile zip = new ZipFile()) { foreach (string filePath in yourListOfFilePaths) { zip.AddFile(filePath); // FILE PATH LOCATION / WHICH FOLDER FILES YOU WANTED TO ZIP zip.Password = “abc1234”; // CHANGE YOUR PASSWORD HERE } zip.Save(ZipPath + “\\Batch_” + DateTime.Now.ToString(“ddMMyy”) + “.zip”); […]

Putty – 使用C#动态删除文件

我正在开发一个使用C#作为编程语言的Windows应用程序。 要求是 以动态方式登录putty 从特定位置删除旧文件 我目前正在使用下面的代码登录putty,但是如何运行delete命令? string hostname = “hostname”; string login = “login”; string password = “password”; ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = @”C:\Putty\putty.exe”; startInfo.Arguments = string.Format(“{0}@{1} -pw {2}”, login, hostname, password); startInfo.Start(); 我想传递这样的东西 rm myFile*.txt 但在此之前,我必须通过导航到特定位置 cd /dir1/dir2/NewFolder 我想删除NewFolder下的所有.txt文件?

在C#中使用具有多个类的后台工作程序

我正在学习使用C#进行编程,并且已经完成了大部分基础知识。 我无法使用后台工作程序并将其与多个类一起使用。 这是我正在编写的备份程序,我有以下类。 lacie.cs —>用于搜索备份设备main.cs —>主条目size.cs —>确定备份的大小xml.cs —>读取目录的xml配置文件备份。 到目前为止,我将展示main.cs中的内容。 [main.cs代码] using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QXBackup { class main { static void Main(string[] args) { lacie BackupDrive = new lacie(); BackupDrive.findLacie(); xml xmlFile = new xml(); xmlFile.ProcessXML(); size BackupSize = new size(); BackupSize.GetSize(xmlFile.Path); int SizeofBackup = (int)(((BackupSize.BackupSize) / 1024f) / 1024f) […]

不完整的XML属性

我是通过dataset.GetXML()方法从Dataset创建XML。 我想为它添加属性 XmlAttribute attr = xmlObj.CreateAttribute(“xmlns:xsi”); attr.Value = “http://www.createattribute.com”; xmlObj.DocumentElement.Attributes.Append(attr); attr = xmlObj.CreateAttribute(“xsi:schemaLocation”); attr.Value = “http://www.createattribute.com/schema.xsd”; xmlObj.DocumentElement.Attributes.Append(attr); xmlObj.DocumentElement.Attributes.Append(attr); 但是当我打开XML文件时,我发现schemaLocation的属性中没有“xsi:” 我想要这个属性 xsi:schemaLocation=”http://www.createattribute.com/schema.xsd” 这总是这样,或者我在这里遗漏了一些东西。 我很好奇是否有人可以帮助我,如果这可以解决或给我一些URL,我可以找到解决方案 谢谢

在父方法中访问子项的静态属性

说我有以下代码: class Parent { static string MyField = “ParentField”; public virtual string DoSomething() { return MyField; } } class Child : Parent { static new string MyField = “ChildField”; } 现在我希望能够做到以下两点: Console.WriteLine(Parent.MyField); Console.WriteLine(Child.MyField); 这些工作按预期工作,但我也想这样做: Child c = new Child(); Console.WriteLine(c.DoSomething()); 由于没有为Child类定义DoSomething(),因此返回的是Parent的MyField,但我想要的是Child的MyField。 所以我的问题是:我有什么方法可以做到这一点? 注意:覆盖Child类中的方法是一个选项,但由于我将从Parentinheritance许多Child类,并且该方法应该在所有这些中执行相同的操作,因此更改此方法中的某些内容会带来很多麻烦。

加载了错误的App.config

我有一个我构建的.NET 3.5类库,它读取App.config文件以获取所需的值。 当我在Visual Studio中测试它时,它可以提取配置值。 为了测试它,我只是将项目更改为控制台应用程序并执行方法调用。 我需要从许多其他.NET程序中调用这个类库,我希望类库是自给自足的(我应该可以从任何其他程序调用它,它应该使用自己的配置文件,不知道关于任何调用配置文件等)。 我可以添加对dll的引用(因为我还在开发我正在使用VS 2008,还没有向GAC抛出任何内容)但是类库正在读取的App.config来自调用程序的App.config,不是类库的App.config。 类库dll将它的配置文件放在同一目录中,因此它应该能够很好地找到它,并且调用应用程序的命名方式不同。 我正在使用App.config中的标准键值对(例如配置文件名称myClassLibrary.dll.config)并使用以下代码行获取值: String myVal = ConfigurationSettings.AppSettings[“myConfigSetting”]; 有谁知道如何解决这一问题?