Добавить атрибуты внутри пользовательского атрибута в c# - PullRequest
0 голосов
/ 20 марта 2020

Я хочу динамически добавлять атрибуты к свойствам данного класса, потому что проект станет больше и процедура будет повторяться, что-то вроде этого:

public class MyAttr : Attribute {
    public MyAttr () {
        foreach(var prop in properties) {
            prop.Attributes.Add([Display(Name =  nameof(prop.Name), ResourceType = typeof(Labels))]);            
        }
    }
}

И использовать его на классах:

[MyAttr]
public class SomeClass {
    public string Name {get; set;}
    public string Description {get; set;}
}

Конечно, приведенный выше код не является реальной программой, но я попытался упростить ее.

Возможно ли это сделать? или, если нет, есть ли обходной путь?

Обновление: Я знаю, что есть атрибут с именем CallerMemberName, который извлекает имя данного свойства, но как получить само свойство и добавить еще приписывает это?

1 Ответ

2 голосов
/ 21 марта 2020

Я думаю, вы могли бы заставить что-то работать, комбинируя приведенные ниже ответы из других постов.

Доступ к свойствам объекта из атрибута: Может C# Атрибуты для доступа к целевому классу?

Добавление атрибутов во время выполнения: Как добавить атрибут в свойство во время выполнения путем создания новых типов во время выполнения.

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

...