Есть ли другие полезные атрибуты для свойств C #?

Возможное дублирование:
Самые полезные атрибуты в C #

Кроме:

[DefaultValue(100)]
[Description("Some descriptive field here")]
public int MyProperty{get; set;}

Какие еще атрибуты C # полезны для свойств, после их изучения я чувствую, что упускаю их.

Похожие вопросы

Самые полезные атрибуты в C #


person maxfridbe    schedule 16.10.2008    source источник
comment
Это так близко к тому, чтобы дублировать ссылку, которую Митчел Селлерс только что поставил в вопросе. Что дальше, полезные атрибуты или класс. перечисление и т. д .: P   -  person Patrick Desjardins    schedule 17.10.2008


Ответы (8)


[Obsolete("This is an obsolete property")]

Это один из моих любимых. Позволяет пометить свойство / метод как устаревший, что вызовет предупреждение компилятора (возможно, ошибку компилятора) при сборке.

person TheSmurf    schedule 16.10.2008
comment
+1 Вы почти так говорите, но этот атрибут также полезен в качестве примечания для программиста во время разработки. - person Mark Hurd; 10.06.2014

Немного...

синхронизация, встраивание и т. д .:

[MethodImpl]

компонентная модель:

[TypeDescriptor], [DisplayName], [Editor]

сериализация:

[Serializable], [DataMember], [XmlElement], [XmlAttribute], [NonSerialized], etc

декларативная безопасность:

[PrincipalPermission]

все про COM ...

person Marc Gravell    schedule 16.10.2008

[Browsable]

мой любимый. (MSDN)

person Greg D    schedule 16.10.2008
comment
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - это то, что я часто использую вместе с атрибутом BrowsableAttribute. - person newman; 01.11.2011

Я давно хотел получить исчерпывающий список атрибутов C #, но никогда не находил его ни в документации MSDN, ни где-либо еще. Я думаю, что это одна из самых слабых частей их документации.

Я использую [XmlIgnore], если хочу исключить свойство из сериализации xml.

person P a u l    schedule 16.10.2008
comment
В документации по классу Attribute есть все, потому что отображаются наследующие классы;) msdn.microsoft.com/en-us/library/system.attribute.aspx - person FunctorSalad; 05.02.2010

Атрибуты свойств C #

person Christian C. Salvadó    schedule 16.10.2008

Если вы используете 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.

person Panos    schedule 16.10.2008

Локализуемый, а также ListBindable может быть интересен для настраиваемых конструкторы компонентов.

person Matt H    schedule 16.10.2008

Я использую его довольно часто при перечислениях. У вас когда-либо было это значение "по умолчанию" или "неизвестно" в перечислении, но вы не обязательно хотите привязать его к элементу управления, например к раскрывающемуся списку? Добавьте настраиваемый атрибут или используйте существующий для представления элементов, которые должны / не должны быть доступны для просмотра.

Я много работаю с фреймворками, в которых есть брокеры событий и внедрение политик, и атрибуты неоценимы, когда дело доходит до украшения событий дополнительными метаданными или слабо связанными событиями.

Есть несколько довольно новых инструментов, таких как PostSharp (http://www.postsharp.org/), которые вы можете используйте для инкапсуляции поведения внутри атрибутов. Пара хороших примеров на этом сайте; удивительно, насколько проще можно сделать код с помощью этих шаблонов. . .

person joshua.ewer    schedule 16.10.2008