У меня есть некоторые классы, которые не реализуют определенный интерфейс, но структурно соответствуют этому интерфейсу.
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, но я никогда не использовал это, и на первый взгляд это выглядит не очень легко.
Есть ли более простой способ или, возможно, есть библиотека, которая уже реализует это?