标签: .net-attributes

最有用的属性

我知道属性非常有用.有一些预定义的,例如,[Browsable(false)]它允许您在属性选项卡中隐藏属性.这是一个很好的解释属性的问题:.NET中的属性是什么?

您在项目中实际使用的预定义属性(及其命名空间)是什么?

.net c# .net-attributes

769
推荐指数
30
解决办法
16万
查看次数

为什么C#禁止通用属性类型?

这会导致编译时异常:

public sealed class ValidatesAttribute<T> : Attribute
{

}

[Validates<string>]
public static class StringValidation
{

}
Run Code Online (Sandbox Code Playgroud)

我意识到C#不支持通用属性.然而,经过大量的谷歌搜索,我似乎无法找到原因.

有谁知道为什么泛型类型无法衍生出来Attribute?任何理论?

c# generics .net-attributes

494
推荐指数
7
解决办法
7万
查看次数

获得Enum价值的属性

我想知道是否可以获取枚举值的属性而不是枚举本身的属性?例如,假设我有以下枚举:

using System.ComponentModel; // for DescriptionAttribute

enum FunkyAttributesEnum
{
    [Description("Name With Spaces1")]
    NameWithoutSpaces1,    
    [Description("Name With Spaces2")]
    NameWithoutSpaces2
}
Run Code Online (Sandbox Code Playgroud)

我想要的是枚举类型,产生2元组的枚举字符串值及其描述.

价值很容易:

Array values = System.Enum.GetValues(typeof(FunkyAttributesEnum));
foreach (int value in values)
    Tuple.Value = Enum.GetName(typeof(FunkyAttributesEnum), value);
Run Code Online (Sandbox Code Playgroud)

但是如何获取描述属性的值,以填充Tuple.Desc?如果属性属于枚举本身,我可以想到如何做到这一点,但我不知道如何从枚举的值中获取它.

c# reflection enums .net-attributes

453
推荐指数
9
解决办法
27万
查看次数

[STAThread]做什么?

我正在学习C#3.5,我想知道[STAThread]我们的课程有什么用?

c# .net-attributes

277
推荐指数
3
解决办法
20万
查看次数

找到一个有反射的私人领域?

鉴于这门课程

class Foo
{
    // Want to find _bar with reflection
    [SomeAttribute]
    private string _bar;

    public string BigBar
    {
        get { return this._bar; }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想找到我将用属性标记的私有项_bar.那可能吗?

我已经用我寻找属性的属性做了这个,但从来没有私有成员字段.

获取私有字段需要设置哪些绑定标志?

.net c# reflection .net-attributes

219
推荐指数
8
解决办法
15万
查看次数

.NET中的属性是什么?

.NET中的属性是什么,它们有什么用处,以及如何创建自己的属性?

.net c# glossary .net-attributes

203
推荐指数
6
解决办法
6万
查看次数

122
推荐指数
4
解决办法
12万
查看次数

实施类/方法的属性装饰

继我最近关于大型复杂对象作为Web服务结果的问题之后.我一直在考虑如何确保所有未来的子类都可以序列化为XML.

现在,显然我可以实现IXmlSerializable接口然后读取它的读者/写入器,但我想避免它,因为它意味着我需要在我想要的时候实例化读写器,并且99.99%的时间我将使用字符串,所以我可能只写自己的字符串.

但是,要序列化为XML,我只是用Xml来装饰类及其成员??? 属性(XmlRoot,XmlElement等),然后将其传递给XmlSerializerStringWriter以获取字符串.这一切都很好.我打算把方法返回到一个通用的实用工具方法,所以我不需要担心类型等.

我担心的是:如果我没有使用必需的属性装饰类,则在运行时才会抛出错误.

有没有办法强制执行属性修饰?可以用FxCop完成吗?(我还没用过FxCop)

更新:

很抱歉让这个关闭的人有很多关闭,很多事要做!

绝对喜欢在测试用例中使用反射来实现它的想法,而不是诉诸于FxCop(喜欢把所有东西放在一起).. Fredrik Kalseth的答案很棒,感谢包含代码,因为它可能会让我有点挖掘弄清楚自己该怎么做!

+1给其他人类似的建议:)

c# xml serialization coding-style .net-attributes

16
推荐指数
1
解决办法
4428
查看次数

如果找不到元素,我是否可以在C#中使用XmlSerializer反序列化?

我正在使用XmlSerializer在C#中将对象写入和读取到xml.我目前使用属性XmlElementXmlIgnore操纵对象的序列化.

如果我的xml文件缺少我需要的xml元素,我的对象仍然反序列化(xml - > object)就好了.如何指示(最好通过属性)某个字段是"必需的"?

这是我目前使用的示例方法:

[XmlElement(ElementName="numberOfWidgets")]
public int NumberThatIsRequired {
    set ...;
    get ...;
}
Run Code Online (Sandbox Code Playgroud)

我理想的解决方案是添加类似XmlRequired属性的东西.

另外,对于哪些属性可用于操纵XmlSerializer的行为,是否有一个很好的参考?

c# xml xml-serialization .net-attributes

14
推荐指数
2
解决办法
1万
查看次数

属性规范中的奇怪歧义(两个使用指令)

背景:属性规范中,有时存在两种写入应用属性的有效方法。例如,如果属性类具有名称HorseAttribute,则可以将属性应用为[HorseAttribute][Horse]。歧义可以用@例如来解决[@Horse]

以下是有效的程序:

using System;
using Alpha;
using Beta;

namespace N
{
  [Horse]
  class C
  {
  }
}

namespace Alpha
{
  // valid non-abstract attribute type with accessible constructor
  class HorseAttribute : Attribute
  {
  }
}

namespace Beta
{
  // any non-attribute type with that name
  enum Horse
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

Alpha.HorseAttribute我编写just时,C#编译器可以选择[Horse]。毕竟,类型Beta.Horse完全不适合在属性规范中使用。

即使交换名称,C#编译器也会知道该怎么做:

using System;
using Alpha;
using Beta;

namespace N
{
  [Horse] …
Run Code Online (Sandbox Code Playgroud)

c# compiler-errors custom-attributes .net-attributes

12
推荐指数
1
解决办法
284
查看次数