可能重复:
C# 中最有用的属性
除了:
[DefaultValue(100)]
[Description("Some descriptive field here")]
public int MyProperty{get; set;}
还有哪些 C# Attributes 对 Properties 有用,在学习了这些之后,我觉得我错过了。
相关问题
可能重复:
C# 中最有用的属性
除了:
[DefaultValue(100)]
[Description("Some descriptive field here")]
public int MyProperty{get; set;}
还有哪些 C# Attributes 对 Properties 有用,在学习了这些之后,我觉得我错过了。
相关问题
[Obsolete("This is an obsolete property")]
这是我的最爱之一。允许您将属性/方法标记为过时,这将在构建时导致编译器警告(可选地,编译器错误)。
一些...
同步、内联等:
[MethodImpl]
组件型号:
[TypeDescriptor], [DisplayName], [Editor]
序列化:
[Serializable], [DataMember], [XmlElement], [XmlAttribute], [NonSerialized], etc
声明式安全:
[PrincipalPermission]
所有 COM 的东西......
[Browsable]
是我的最爱。( MSDN )
很长一段时间以来,我一直想要一个完整的 c# 属性列表,但从未在 MSDN 文档或任何地方找到一个列表。我认为这是他们文档中较弱的部分之一。
如果我想从 xml 序列化中排除一个属性,我使用 [XmlIgnore]。
如果您在多语言 UI中使用Description
和,那么您可能会发现基于资源的版本很有用(反映自):Category
System.Windows.Forms
[AttributeUsage(AttributeTargets.All)]
internal sealed class SRDescriptionAttribute : DescriptionAttribute
{
private bool replaced;
public SRDescriptionAttribute(string description) : base(description)
{
}
public override string Description
{
get
{
if (!this.replaced)
{
this.replaced = true;
base.DescriptionValue = SR.GetString(base.Description);
}
return base.Description;
}
}
}
[AttributeUsage(AttributeTargets.All)]
internal sealed class SRCategoryAttribute : CategoryAttribute
{
public SRCategoryAttribute(string category) : base(category)
{
}
protected override string GetLocalizedString(string value)
{
return SR.GetString(value);
}
}
SR
适当的包装器在哪里ResourceManager
。
我经常在枚举中使用它。枚举中有“默认”或“未知”值,但您不一定希望绑定到控件,例如下拉菜单?添加自定义属性或使用现有属性来表示应该/不应该可见的项目。
我在具有事件代理和策略注入的框架上做了很多工作,而在使用额外的元数据或松散耦合的事件装饰事件时,属性是非常宝贵的。
有一些相当新的工具,例如 PostSharp ( http://www.postsharp.org/ ),您可以使用它们将行为封装在属性中。该网站上有几个很好的例子;令人惊讶的是,您可以通过这些模式编写代码变得多么简单。. .
Localizable 和 ListBindable 对于自定义组件设计者来说可能很有趣。