С новыми динамическими возможностями в .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
на.
Итак, мои вопросы:
-
Возможно ли это сделать с динамическим временем выполнения? Похоже, что динамическое внедрение таких вещей, как методы и свойства, довольно просто, но я не нашел никакой документации о динамическом внедрении интерфейсов и преобразований.
-
Предполагая, что это возможно, насколько это сложно? (Можно предположить, что я достойный программист с большим опытом таких вещей, как отражение, но новичок в динамической структуре.)
-
Есть ли какие-либо ресурсы, которые помогли бы указать мне в правильном направлении для реализации чего-то подобного? Или даже образцы, где это уже сделано, что я могу использовать в качестве отправной точки?