Как получить атрибуты в ссылочном поле
-
19-09-2019 - |
Вопрос
У меня есть вопрос:Есть ли элегантный способ получить атрибуты в ссылочном поле.Т.е.:
public class C1: Base
{
[MyAttribute]
public string Field1;
}
public class Base
{
private void Do(ref string field)
{
if (field has attributes)
DoSomething();
}
}
Как получить атрибуты поля в методе Do()?
Заранее спасибо.
Решение
Вы не сможете сделать это с ref string field
подпись.Атрибуты применяются к объявлениям (полям, классам, событиям и т. д.), а не к «экземплярам».
Что ты может сделать, это изменить ваш метод следующим образом:
private void Do(Type fieldContainingType, string fieldName, ref string field)
а затем используйте отражение для проверки fieldContainingType
чтобы увидеть, какие атрибуты применяются к полю с именем fieldName
.Однако этот подход чрезвычайно хрупкий и, как правило, очень плохой.
Не связан с StackOverflow