Динамическая генерация типов или обертки вокруг интерфейсов в 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 (раньше с ними не работал), но у меня не получилось, хотя выглядело заманчиво
  • Вопрос задан
  • 2833 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

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