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