Что такое .Net эквивалент динамических прокси Java? - PullRequest
6 голосов
/ 16 июля 2009

В Java можно динамически реализовать интерфейс, используя динамический прокси, что-то вроде этого:

public static <T> T createProxy(InvocationHandler invocationHandler, Class<T> anInterface) {
    if (!anInterface.isInterface()) {
        throw new IllegalArgumentException("Supplied interface must be an interface!");
    }
    return (T) Proxy.newProxyInstance(anInterface.getClassLoader(), new Class[]{anInterface}, invocationHandler);
}

Есть ли эквивалент в .Net?

Ответы [ 5 ]

5 голосов
/ 17 июля 2009

Наиболее широко используемым является динамический прокси Castle Project , который также используется несколькими (или, по крайней мере, 1) фреймворками. Имейте в виду, что методы (и засахаренные методы, такие как свойства) не являются виртуальными по умолчанию в dotnet, поэтому это может создать некоторые головные боли, если вы не ожидали этого в дизайне своего класса.

5 голосов
/ 16 июля 2009

Есть несколько библиотек, которые реализуют это в .NET. Вот их список , с эталоном.

2 голосов
/ 16 июля 2009

Да. Вы выводите из резюме RealProxy класс .

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

Взгляните также на PoshSharp (AOP framework для .NET) - он может делать подобные вещи, но во время компиляции. Возможно, вы бы предпочли подход, который он поддерживает.

0 голосов
/ 16 июля 2009

Не существует прямого эквивалента, но см. Как сделать динамические прокси в C # для некоторых обходных путей:

Фон: динамический прокси динамически генерирует класс в время выполнения, которое соответствует определенному интерфейс, проксируя все вызовы один «общий» метод.

Ранее Стеллсми спросил, можно сделать это в .NET (это стандартная часть Java). Видя как это во второй раз я говорил об этом я считаю, что за столько дней это стоит блог ...

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