Добавить атрибут ко всем свойствам класса и его потомков

Я работаю с Workflow Foundation, и у меня есть база CodeActivity< /a> это суперкласс всей моей деятельности.

Я добавляю Category в качестве "ввода" или «вывод» в свойства, чтобы облегчить работу тем, кто использует действия. Пример:

public class MyActivity : MyBaseActivity
{
    [Category("Input")]
    public InArgument<string> User { get; set; }

    [Category("Input")]
    public InArgument<int> Department { get; set; }

    [Category("Output")]
    public OutArgument<string> Supervisor { get; set; }

    // ...
}

Все мои InArgument будут иметь категорию, установленную в качестве входных данных, а также OutArguments.

Есть ли способ сделать это, не записывая [Category("Input")] в каждое отдельное свойство?

Я пробовал унаследованную версию InArgument:

[Category("Input")]
public sealed class ActivityInput<T> : InArgument<T> { }

Но InArgument есть sealed, так что это невозможно.


person Guillermo Mestre    schedule 16.11.2018    source источник
comment
Это должно быть возможно с использованием дескрипторов типов. Вопрос старый, но будущие читатели могут попробовать его, используя что-то подобное этому.   -  person Reza Aghaei    schedule 13.08.2019
comment
Я перестал работать с WWF несколько месяцев назад из-за смены проекта, но буду иметь это в виду, если буду участвовать в другом подобном проекте. Спасибо за информацию @RezaAghaei =)   -  person Guillermo Mestre    schedule 14.08.2019