C # / Resharper 5 структурный поиск, обнаружение и предупреждение, если какие-либо не виртуальные публичные методы на классах с определенными атрибутами - PullRequest
2 голосов
/ 16 апреля 2010

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

Я могу сказать, является ли класс прокси или нет, основываясь на том, имеет ли класс или какой-либо из его методов атрибут перехвата, например, [Сделка]

Можно ли написать структурный поиск ReSharper 5, который бы предупреждал, если в классе с атрибутом перехвата определены не виртуальные публичные методы.

1007 * Е.Г. *

Ok

public class InterceptedClass
{
    [Transaction]
    public virtual void TransactionalMethod()
    {
       ...
    }

    public virtual void AnotherMethod()
    {
       ...
    }
}

Bad

public class InterceptedClass
{
    [Transaction]
    public virtual void TransactionalMethod()
    {
       ...
    }

    public void AnotherMethod() // non-virtual method will not be called by proxy
    {
       ...
    }
}

Большое спасибо.

1 Ответ

0 голосов
/ 18 апреля 2010

В настоящее время это невозможно с ReSharper 5, AFAIK. Мы улучшим структурированные шаблоны до класса и в целом до уровня дизайна в одной из следующих версий. Спасибо, и продолжайте в том же духе! Нам понадобится много дел:)

...