Tag: C#的

如何获得具有给定属性的属性列表?

我有一个types, t ,我想获得具有MyAttribute属性的公共属性的列表。 该属性标记为AllowMultiple = false ,如下所示: [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 目前我所拥有的是这个,但是我认为还有更好的办法: foreach (PropertyInfo prop in t.GetProperties()) { object[] attributes = prop.GetCustomAttributes(typeof(MyAttribute), true); if (attributes.Length == 1) { //Property with my custom attribute } } 我怎样才能改善这个? 我很抱歉,如果这是重复的,那里有很多reflection线程…似乎这是一个相当热门的话题。

如何将string添加到string数组? 没有.Addfunction

private string[] ColeccionDeCortes(string Path) { DirectoryInfo X = new DirectoryInfo(Path); FileInfo[] listaDeArchivos = X.GetFiles(); string[] Coleccion; foreach (FileInfo FI in listaDeArchivos) { //Add the FI.Name to the Coleccion[] array, } return Coleccion; } 我想将FI.Name转换为一个string,然后将其添加到我的数组。 我怎样才能做到这一点?

将XmlDocument转换为string

这是我目前如何将XMLDocument转换为string StringWriter stringWriter = new StringWriter(); XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter); xmlDoc.WriteTo(xmlTextWriter); return stringWriter.ToString(); 这个方法的问题是,如果我有“ ((引号),我有属性)它逃脱它们。 例如: <Campaign name="ABC"> </Campaign> 以上是预期的XML。 但它返回 <Campaign name=\"ABC\"> </Campaign> 我可以做String.Replace“\”,但是这种方法好吗? 有没有什么副作用? 如果XML本身包含一个“\”,它会工作正常吗?

谷歌浏览器与UI自动化访问树caching问题

当用户在浏览器中向下滚动时,Google Chrome不刷新辅助function元素( AutomationElement )。 重现它: 使用"chrome –force-render-accessibility"启用渲染器可访问性,或在"chrome://accessibility"上设置全局可"chrome://accessibility" 。 转到http://en.wikipedia.org/wiki/Google 在UI自动化模式下(从Windows套件)打开inspect.exe ,查找“链接到相关文章”元素。 回到Chrome,向下滚动,直到看到底部的“链接到相关文章” “相关文章的链接”元素被标记为屏幕 我发现了一些手动解决scheme,可以强制Chrome刷新它: 设置缩放到90%,然后将其设置回100%(非常非常丑陋的方式) closures辅助function,然后打开chrome://accessibility/ 我正在寻找的是能够以编程方式执行这些操作之一,或任何可以使Chrome刷新其caching树的操作。 我试过了: 使用PInvoke/MoveWindow调整窗口大小 用PInvoke/Redrawwindow重PInvoke/Redrawwindow窗口 构build一个chrome扩展,并根据需要强制缩放为100%: chrome.tabs.setZoom(null, 0); (工作,但眨眼,放慢窗口) 这些都没有正常工作。 编辑 :testing与谷歌Chrome 40.XX,41.XX,42.XX,43.XX,44.XX,45.XX,46.XX,47.XX.Dev,48.XX.Dev在Windows 7下。

如何使可变macros(可变数量的参数)

我想用C写一个接受任意数量参数的macros,而不是一个特定的数字 例: #define macro( X ) something_complicated( whatever( X ) ) 其中X是任意数量的参数 我需要这个,因为whatever是超载,可以调用2或4参数。 我试过两次定义这个macros,但是第二个定义覆盖了第一个macros! 我正在使用的编译器是g ++(更具体地说,mingw)

什么是温莎城堡,为什么要关心?

我是一个很长时间的Windows开发者,在win32和早期的COM上已经断绝了我的牙齿。 自2001年以来,我一直在使用.Net,所以我非常stream利地使用C#和CLR。 我从来没有听说过温莎城堡,直到我开始参与堆栈溢出。 我已阅读温莎城堡“入门指南”,但不是点击。 教这个老狗新花样,告诉我为什么我应该把温莎城堡整合到我的企业应用程序中。

如何在ASP.net/C#应用程序configuration文件值中为值添加&符号

我有一个C#程序,在configuration文件中的值。 我想要的是像一个URL值存储&符号… <appSettings> <add key="myurl" value="http://www.myurl.com?&cid=&sid="/> </appSettings> 但是,我的网站出现错误。 &符号是不允许的。 我试过各种forms的逃避&符号无济于事。 任何人都知道正确的forms来做到这一点? 所有的build议都欢迎。

为什么Attributes.IsDefined()缺less重载?

受到SO问题的启发。 Attribute类有几个重载的IsDefined()方法。 所涵盖的属性应用于Assembly,Module,MemberInfo,ParameterInfo。 MemberInfo重载包括PropertyInfo,FieldInfo,EventInfo,MethodInfo,ConstructorInfo。 这照顾了大部分的AttributeTargets。 除了一个biggy:Attribute.IsDefined(Type,Type)没有重载,所以你可以检查一个属性是否定义在一个类上。 或者是一个结构,委托或枚举。 不是这是一个真正的问题,Type.GetCustomAttributes()可以解决这个问题。 但所有的BlahInfotypes也有这个。 我想知道缺乏对称性。 我不能指责为什么这将是types的问题。 猜测inheritance问题并不能解释给我。 有ValueType的混合可能是领先的,仍然没有意义。 我不买“他们忘了”,他们从来不这样做。 为什么这个超载缺失?

String.Equals(a,b)如何不产生StackOverflowException?

在检查String ==运算符时,我注意到它调用了String.Equals(string a, string b) ,意思是它只是一个传递。 检查String.Equals(string a, string b)方法,我发现它使用==运算符进行了相等性检查。 这是如何工作的,而不是像"x" == "x"或"x" == "y"这样的东西造成StackOverflowException ? 更新 :我让JetBrains知道,他们把它作为dotPeek的关键优先事项。 https://youtrack.jetbrains.com/issue/DOTP-6789 我还在ILSpy的GitHub回购上添加了一个问题。

调用构造函数中的虚函数

假设我有两个C ++类: class A { public: A() { fn(); } virtual void fn() { _n = 1; } int getn() { return _n; } protected: int _n; }; class B : public A { public: B() : A() {} virtual void fn() { _n = 2; } }; 如果我写下面的代码: main() { B b; int n […]