Задать вопрос

Динамическая генерация типов или обертки вокруг интерфейсов в PCL?

Для своих нужд пытаюсь сделать генератор прокси-классов вокруг интерфейсов. То есть, положим, есть интерфейс
interface ITest
{
    void DoTest(int arg1);
}


Есть класс-хелпер
class Helper
{
    protected object proxyCaller(MethodInfo executingMethod, params object[] args) { ... }
}


В обычных ClassLibrary получилось сделать с помощью AssemblyBuilder и TypeBuilder генерацию класса, наследующего от Helper и указанного интерфейса (например, ITest).
ITest obj = GetInstanceFor<ITest>();
obj->DoTest(1);


Вызов obj->DoTest приводит к вызову proxyCaller, в котором я могу делать уже осознанные действия и возвращать результат.

Короче говоря, получается прозрачный прокси, только своими руками.

Появилась задача сделать то же самое для PCL, чтобы библиотеку можно было использовать для WP8, Win8, Android (Mono, там есть, говорят, поддержка PCL с бубном). Но, как выяснилось, в PCL механизм Reflection.Emit то ли отсутствует, то ли сильно обрезан — type- и assemblybuilder недоступны.

Подскажите, пожалуйста, есть ли способ без дополнительных библиотек реализовать подобную динамическую обертку для интерфейсов?

Пробовал делать через DynamicObject (раньше с ними не работал), но у меня не получилось, хотя выглядело заманчиво
  • Вопрос задан
  • 2835 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    SDP-030_PRG Продвинутая разработка в Microsoft .NET
    1 неделя
    Далее
  • Stepik
    PRO C#. Управление памятью
    3 недели
    Далее
  • Учебный центр IBS
    NET-003 Асинхронное программирование в .NET
    1 неделя
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы