Множество атрибутов в AttributeUsage

[AttributeUsage(AttributeTargets.Property)]
public class MyAttribute : Attribute
{
...
}

Я хочу, чтобы этот пользовательский атрибут использовался как в свойствах, так и filed, но не в других. Как назначить несколько целей (AttributeTargets.Property и AttributeTargets.Field)? Или это просто невозможно?

И AttributeTargets.All - это не то, что я хочу.

Ответ 1

Вы можете указать несколько целей, подобных этому, используя оператор | (побитовое ИЛИ) для указания нескольких значений перечисления:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
public class MyAttribute : Attribute
{
    ...
}

Побитовый оператор OR работает с перечислением AttributeTargets, потому что его значения назначаются определенным образом и помечены атрибутом Flags.

Если вам интересно, вы можете прочитать здесь: