С новыми динамическими возможностями в .NET 4.0 кажется, что должна быть возможность динамически реализовать интерфейс, например, Дано:
public interface IFoo
{
string Bar(int baz);
}
public class Foo : IFoo
{
public string Bar(int baz) { return baz.ToString(); }
}
public class Proxy : IDynamicMetaObjectProvider
{
private readonly object target;
public Proxy(object target) { this.target = target; }
// something clever goes here
}
Тогда я надеюсь, что есть какой-то способ написать:
dynamic proxy = new Proxy(new Foo());
IFoo fooProxy = (IFoo)proxy; // because the target object implements it
string bar = fooProxy.Bar(123); // delegates through to the target implementation
Но пока я не уверен, что заменить // something clever goes here
на.
Итак, мои вопросы:
Возможно ли это на самом деле сделать с динамическим временем выполнения? Похоже, что динамически реализовать такие вещи, как методы и свойства, довольно легко, но я не нашел никакой документации о динамически реализуемых интерфейсах и преобразованиях к ним.
Предполагая, что это возможно, насколько сложно это будет? (Вы можете предположить, что я приличный программист с большим опытом таких вещей, как рефлексия, но новичок в динамической среде.)
Есть ли какие-либо ресурсы, которые помогли бы указать мне правильное направление для реализации чего-то подобного? Или даже образцы, в которых подобные вещи уже сделаны, и я могу использовать их в качестве отправной точки?