Получить информацию о декорированном члене по атрибуту в C # - PullRequest
2 голосов
/ 15 июля 2009

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

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
    }
}

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

Ответы [ 2 ]

3 голосов
/ 15 июля 2009

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

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

1 голос
/ 15 июля 2009

Требуется блок приложения Policy Injection в EntLib.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...