Атрибуты метода унаследованы в C #? - PullRequest
29 голосов
/ 14 июля 2009

Применяются ли атрибуты к абстрактному методу в базовом классе, примененному к переопределенным версиям в дочерних классах?

Надеюсь, вопрос достаточно ясен без примера.

Ответы [ 3 ]

33 голосов
/ 14 июля 2009

Зависит от того, как объявлен сам атрибут - см. Свойство AttributeUsageAttribute.Inherited.

17 голосов
/ 14 июля 2009

Зависит от атрибута.

атрибуты, применяемые к определению класса Attribute, содержат свойство [AttributeUsageAttribute.Inherited], которое определяет, наследуется ли приписанный в производных классах.

проверить этот образец

[global::System.AttributeUsage(AttributeTargets.Method, Inherited = true, 
     AllowMultiple = false)]
public sealed class MyAttribute : Attribute
{

    public MyAttribute (string FieldName)
    {
        //constructor.
    }

}
9 голосов
/ 14 июля 2009

Вы можете указать это, применив атрибут AttributeUsage к вашим собственным и установив свойство Inherited (которое по умолчанию имеет значение true). Это свойство указывает, может ли ваш атрибут наследоваться классами, производными от классов, к которым применен ваш пользовательский атрибут.

[AttributeUsage( Inherited = false)]
public class CustomAttribute : Attribute
{
}

Рекомендуется прочитать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...