Получить информацию о декорированном члене по атрибуту в C #

2

Мне нужно знать, есть ли какой-либо способ (или другой отличный подход) к атрибуту, который знает что-то о том, что его украшает. Например:

class Cat
{
    public Cat() { }

    [MyAttribute]
    public House House { get; set; }
}

Внутри MyAttribute Я должен выполнить некоторую предварительную обработку с домашним объектом...

class MyAttribute : Attribute
{
    public MyAttribute() 
    {
        var ob = // Discover the decorated property, do some changes and set it again
    }
}

Я не знаю, лучше ли это, и если это действительно возможно,

Теги:
reflection
attributes

2 ответа

3
Лучший ответ

Это не так, как работают атрибуты. Они просто добавляют метаданные времени компиляции к чему-то. Они ничего не выполняют сами по себе. Во время выполнения код может использовать эти метаданные для выполнения действий.

ОБНОВЛЕНИЕ: В принципе, как я понимаю, вы пытаетесь выполнить две вещи. Первое - сообщить репозиторию, что он не загружает некоторые свойства. Атрибуты могут использоваться для этой цели, но код репозитория должен использовать отражение в типе сущности и видеть, что он не должен загружать в первую очередь. Во-вторых, вы хотите, чтобы свойство было загружено так, как оно было вызвано в первый раз. Вам нужно проверить, загружен ли он уже на каждом вызове и загружать его при первом вызове. Это может быть достигнуто путем ручной вставки такого кода или использования чего-то вроде PostSharp, который обрабатывает код и может автоматически вводить вызовы методов, просматривая по атрибутам. Наверное, это то, о чем вы просили в первую очередь.

  • 0
    Так что было бы правильным путем здесь?
  • 0
    Вероятно, вы должны упомянуть вашу актуальную проблему, чтобы получить лучшее решение. Более четко, что вы пытаетесь достичь в первую очередь?
Показать ещё 2 комментария
1

В EntLib вам понадобится блок приложения Injection Policy.

Разработчики могут использовать Политику Блок приложений для инъекций, чтобы указать сквозное поведение объектов в условия набора политик. Политика представляет собой комбинацию ряда обработчики, выполняющие код клиента вызывает методы класса и-с исключение атрибутов политики - ряд совпадающих правил которые выбирают классы и класс членов (методы и свойства) который прикрепляет блок приложения обработчики.

  • 0
    Я собираюсь подготовить ссылку! Спасибо за свет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню