Вопрос

У меня есть вопрос:Есть ли элегантный способ получить атрибуты в ссылочном поле.Т.е.:

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.Однако этот подход чрезвычайно хрупкий и, как правило, очень плохой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top