Tag: C#的

通过描述属性查找枚举值

这可能看起来有点颠倒,但我想要做的是通过其Description属性从枚举中获取枚举值。 所以,如果我有一个枚举声明如下: enum Testing { [Description("David Gouge")] Dave = 1, [Description("Peter Gouge")] Pete = 2, [Description("Marie Gouge")] Ree = 3 } 我希望能够通过提供string“Peter Gouge”来获得2。 作为一个起点,我可以遍历枚举字段并获取正确的属性字段: string descriptionToMatch = "Peter Gouge"; FieldInfo[] fields = typeof(Testing).GetFields(); foreach (FieldInfo field in fields) { if (field.GetCustomAttributes(typeof(DescriptionAttribute), false).Count() > 0) { if (((DescriptionAttribute)field.GetCustomAttributes(typeof(DescriptionAttribute), false)[0]).Description == descriptionToMatch) { } } } 但是,然后我被困在内心如果做什么。 […]

HtmlAgilityPack – 由于某种原因,<form>是否closures?

我只是写了这个testing,看看我是不是疯了… using System; using System.Collections.Generic; using System.Linq; using System.Text; using HtmlAgilityPack; namespace HtmlAgilityPackFormBug { class Program { static void Main(string[] args) { var doc = new HtmlDocument(); doc.LoadHtml(@" <!DOCTYPE html> <html> <head> <title>Form Test</title> </head> <body> <form> <input type=""text"" /> <input type=""reset"" /> <input type=""submit"" /> </form> </body> </html> "); var body = doc.DocumentNode.SelectSingleNode("//body"); foreach […]

未定义的符号“vtable for …”和“typeinfo for …”?

几乎最后一步,但仍然有一些奇怪的erros …. bash-3.2$ make g++ -Wall -c -g Myworld.cc g++ -Wall -g solvePlanningProblem.o Position.o AStarNode.o PRM.o PRMNode.o World.o SingleCircleWorld.o Myworld.o RECTANGLE.o CIRCLE.o -o solvePlanningProblem Undefined symbols: "vtable for Obstacle", referenced from: Obstacle::Obstacle()in Myworld.o "typeinfo for Obstacle", referenced from: typeinfo for RECTANGLEin RECTANGLE.o typeinfo for CIRCLEin CIRCLE.o ld: symbol(s) not found collect2: ld returned 1 exit […]

反序列化已知和未知字段的json

给定下面的json结果:默认的json结果有一组已知的字段: { "id": "7908", "name": "product name" } 但是可以扩展其他字段(在本例中为_unknown_field_name_1和_unknown_field_name_2 ),其中名称在请求结果时是未知的。 { "id": "7908", "name": "product name", "_unknown_field_name_1": "some value", "_unknown_field_name_2": "some value" } 我希望json结果被序列化和反序列化到已知字段的属性的类中,并将未知字段(没有属性)映射到字典等属性(或多个属性),以便它们可以访问和修改。 public class Product { public string id { get; set; } public string name { get; set; } public Dictionary<string, string> fields { get; set; } } 我想我需要一种方法来插入一个JSON序列化器,并为我自己的遗漏成员做映射(包括序列化和反序列化)。 我一直在寻找各种可能性: json.net和自定义合约parsing器(不知道如何去做) datacontract序列化器(只能重写序列化,序列化) […]

macros名称的有效字符是什么?

C风格的macros名称是否与标识符具有相同的命名规则? 在编译器升级之后,它现在正在为传统应用程序发出这个警告: warning #3649-D: white space is required between the macro name "CHAR_" and its replacement text #define CHAR_& 38 这行代码为&符号定义了一个ASCII值常量。 #define DOL_SN 36 #define PERCENT 37 #define CHAR_& 38 #define RT_SING 39 #define LF_PAR 40 我认为这个定义(实际上没有被任何代码引用)是错误的,应该改成类似“CHAR_AMPERSAND”的东西?

错误:免费():无效的下一个大小(快):

这是什么奇怪的错误,我得到了什么? 我在Ubuntu 10.10上使用g ++编译C ++。 当我运行可执行文件时,它会随机popup(可能是8小时内的2次,每10小时编译一次)。 但是,如果我干净并重新编译,大部分时间都会消失。 *** glibc detected *** ./emailQueue.app: free(): invalid next size (fast): 0x0000000001c40270 *** ======= Backtrace: ========= /lib/libc.so.6(+0x774b6)[0x7f490d95e4b6] /lib/libc.so.6(cfree+0x73)[0x7f490d964c83] ./emailQueue.app[0x401f47] /lib/libc.so.6(__libc_start_main+0xfe)[0x7f490d905d8e] ./emailQueue.app[0x401cc9] ======= Memory map: ======== 00400000-0040d000 r-xp 00000000 08:01 1311132 /home/server/Projects/email/emailQueue.app 0060d000-0060e000 r–p 0000d000 08:01 1311132 /home/server/Projects/email/emailQueue.app 0060e000-0060f000 rw-p 0000e000 08:01 1311132 /home/server/Projects/email/emailQueue.app 01c40000-01c82000 rw-p 00000000 00:00 0 [heap] […]

如何将hex值parsing为一个uint?

uint color; bool parsedhex = uint.TryParse(TextBox1.Text, out color); //where Text is of the form 0xFF0000 if(parsedhex) //… 不起作用。 我究竟做错了什么?

从BackgroundWorker线程访问UI控件

我的窗体上有一个调用RunWorkerAsync()方法的button,然后执行一个动作,然后在同一个窗体上更新一个ListBox。 在DoWork事件完成后,我为事件(这是一个列表)分配结果,我处理RunWorkerCompleted()事件,然后执行下面的代码来更新我的列表框 这称之为: (道歉,代码格式不起作用) 现在,当我运行应用程序并按下刷新button时,出现以下exception: 我将如何解决这个问题? 编辑: 在下面的语句中抛出exception,这发生在DoWork方法中,我清除内容以保持列表最新; listBoxServers.Items.Clear();

为什么在更新模式下,在读和写之间总是需要fseek或fflush?

问:我试图通过使用fopen模式"r+" ,读取某个string,写回修改后的string来更新文件,但不起作用。 答:请务必在写入之前调用fseek ,以便回溯到要覆盖的string的开头,并且因为在读/写“+”模式下读写之间始终需要fseek或fflush 。 我的问题是为什么 fseek或fflush总是需要在读/写“+”模式读写之间? Andrew Koenig的“ C陷阱和陷阱” (1989)第5.2节提到,这是因为向后兼容性问题。 任何人都可以详细解释?

使用ITextSharp提取和更新现有PDF中的链接

我需要将几个(阅读:很多)PDF文件发布到networking上,但是其中很多都有硬编码的文件://链接和非公开位置的链接。 我需要阅读这些PDF文件,并将链接更新到适当的位置。 我已经开始使用itextsharp编写应用程序来读取目录和文件,findPDF并遍历每个页面。 接下来我需要做的是find链接,然后更新不正确的链接。 string path = "c:\\html"; DirectoryInfo rootFolder = new DirectoryInfo(path); foreach (DirectoryInfo di in rootFolder.GetDirectories()) { // get pdf foreach (FileInfo pdf in di.GetFiles("*.pdf")) { string contents = string.Empty; Document doc = new Document(); PdfReader reader = new PdfReader(pdf.FullName); using (MemoryStream ms = new MemoryStream()) { PdfWriter writer = PdfWriter.GetInstance(doc, ms); doc.Open(); […]