Tag: C#的

自定义编译器警告

在.Net中使用ObsoleteAtribute时,它会给你提供编译器警告,告诉你对象/方法/属性已经过时,应该使用别的东西。 我目前正在做一个项目,需要大量的重构前员工代码。 我想写一个自定义属性,我可以用它来标记方法或属性,这些方法或属性会产生编写警告,给我写的消息。 像这样的东西 [MyAttribute("This code sux and should be looked at")] public sub DoEverything(){} 我想要这个产生一个编译器警告,说:“这个代码sux,应该看看”。 我知道如何创build一个自定义属性,问题是如何导致它在Visual Studio中生成编译器警告。

在列表中访问随机项目

我有一个ArrayList,我需要能够点击一个button,然后从该列表中随机挑选一个string,并将其显示在一个消息框中。 我怎么去做这个?

有关在.NET中干净地终止线程的问题

我理解Thread.Abort()是从我阅读过的主题中的大量文章中得到的,所以我现在正在为了取代它而更换一个更干净的方法。 并在比较用户的策略从这里的人在stackoverflow,然后在阅读“ 如何:创build和终止线程(C#编程指南) ”从MSDN两种说法非常相似 – 这是使用volatile bool方法检查策略,这是很好的,但我仍然有几个问题…. 在这里突出的是什么,如果你没有一个简单的工作stream程,只是运行一个循环的代码? 例如,对于我来说,我的过程是一个后台file upload过程,我实际上遍历每个文件,所以这是一些东西,并确保我可以添加我的while (!_shouldStop)顶部覆盖我每个循环迭代,但我有更多的业务stream程发生在它下一个循环迭代之前,我想这个取消过程是活泼的; 不要告诉我,我需要在整个工作人员的function中,每隔4-5行撒上这些循环。 我真的希望有一个更好的办法,有人请告诉我,这是否是正确的[而且只有?]方法来做到这一点,或者他们以前用来实现我所追求的策略。 感谢帮派。 进一步阅读: 所有这些SO响应假定工作者线程将循环。 那不适合我。 如果这是一个线性的,但及时的背景操作呢?

如何将枚举typesvariables转换为string?

如何使printf显示variables的枚举types的值? 例如: typedef enum {Linux, Apple, Windows} OS_type; OS_type myOS = Linux; 而我需要的是类似的东西 printenum(OS_type, "My OS is %s", myOS); 其中必须显示一个string“Linux”,而不是一个整数。 我想,首先我必须创build一个价值索引的string数组。 但是我不知道这是否是最美丽的方式。 有没有可能?

如何中止/取消TPL任务?

在一个线程中,我创build了一些System.Threading.Task并开始每个任务。 当我做.Abort()来杀死线程时,任务不会中止。 如何将.Abort()传输到我的任务?

在C#中使用Selenium WebDriver执行JavaScript

这是如何实现的? 这里说java版本是: WebDriver driver; // Assigned elsewhere JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("return document.title"); 但是我找不到C#代码来执行此操作。

无法加载文件或程序集…试图加载格式不正确的程序(System.BadImageFormatException)

我有两个项目, ProjectA和ProjectB 。 ProjectB是一个控制台应用程序,依赖于ProjectA 。 昨天,一切正常,但突然间,当我运行ProjectB我得到这个: BadImageFormatException未处理 : 无法加载文件或程序集“ProjectA,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”或其某个依赖项。 试图加载格式不正确的程序。 两者都只是定期的项目,没有任何其他non.Net项目的依赖。 两者都完全.Net – 没有本地代码,没有P / Invoke。 我有其他项目依赖于ProjectA ,仍然工作得很好。 我已经尝试过的事情: 确保两个项目都设置为“任何CPU”,并检查构buildcheckbox。 他们是。 确保两个项目都是用于相同的目标框架(.Net 4.0客户端configuration文件) 。 在ProjectB – >参考 – > ProjectA – >属性,确保“复制本地”设置为“真” _ (我证实ProjectA.dll被正确复制) 清理/重build解决scheme。 我甚至尝试在两个项目中手动删除/ bin和/ obj文件夹。 重新启动Visual Studio。 重新启动我的电脑。 检出一个全新的版本库。 但我仍然得到同样的错误。 我不知道我做了什么来解决这个问题,也不知道如何解决这个问题。 有任何想法吗?

byte 数组模式search

任何人都知道在byte []数组中search/匹配字节模式的好方法,然后返回位置。 例如 byte[] pattern = new byte[] {12,3,5,76,8,0,6,125}; byte[] toBeSearched = new byte[] {23,36,43,76,125,56,34,234,12,3,5,76,8,0,6,125,234,56,211,122,22,4,7,89,76,64,12,3,5,76,8,0,6,125}

我怎样才能保护我的.NET程序集反编译?

如果我开始使用C#时学到的第一件事是最重要的一件事。 你可以使用Reflector或其他工具来反编译.NET程序集。 许多开发人员不知道这个事实,当我向他们展示他们的源代码时,他们中的大多数人都感到震惊。 防止反编译仍然是一项艰巨的任务。 我仍然在寻找一种快速,简单和安全的方式来做到这一点。 我不想混淆我的代码,所以我的方法名称将是A,B,C左右。 reflection器或其他工具应该无法将我的应用程序识别为.NET程序集。 我已经知道一些工具,但是它们非常昂贵。 有没有其他方法来保护我的应用程序? 编辑: 我的问题的原因不是为了防止盗版。 我只想阻止竞争对手阅读我的代码。 我知道他们会和他们已经做到了。 他们甚至告诉我。 也许我有点偏执,但商业竞争对手阅读我的代码不会让我感觉良好。

C结构内存布局?

我有C#背景。 非常新鲜的低级语言像C. 在C#中,默认情况下由编译器布置的结构内存。 编译器可以重新sorting数据字段或隐式地在字段之间填充附加位。 所以我不得不指定一些特殊的属性来覆盖这个行为的确切布局。 AFAIK,C默认情况下不重新sorting或alignment结构的内存布局。 但是我听说有一些很难find的例外。 什么是C的内存布局行为? (应该重新排列/排列而不是)