Автоматическое создание оболочки для реализации интерфейса

У меня есть несколько классов, которыене реализовать определенный интерфейс, но структурно соответствовать этому интерфейсу.

interface IFoo {
    void method();
}

class Bar {  // does not implement IFoo
   public void method() {...}
}

Теперь я мог бы написать обертку вокруг тех классов, которые просто делегируют обернутому классу

class BarWrapper : IFoo {
   Bar bar = new Bar();
   public void method()
   {
      bar.method();
   }
}

Но это много утомительной работы. Могут ли эти классы-обертки как-то генерироваться автоматически? Что-то вроде:

IFoo foo = CreateWrapper<IFoo>(new Bar());

Я уверен, что вы могли бы сделать это с Reflection.Emit, но я никогда не использовал это, и на первый взгляд это выглядит не очень легко.

Есть ли более простой способ или, возможно, есть библиотека, которая уже реализует это?

Ответы на вопрос(8)

Ваш ответ на вопрос