Avec les nouvelles capacités dynamiques dans .NET 4.0, il me semble qu'il devrait être possible de mettre en œuvre de manière dynamique une interface, par exemple, avec:
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
}
Ensuite, je l'espère, il y a un moyen de rendre possible l'écriture:
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
Mais, encore, je ne suis pas sûr de ce que pour remplacer // something clever goes here
avec.
Donc, mes questions sont les suivantes:
Est-ce réellement possible de faire avec la dynamique de l'exécution? Il apparaît que de façon dynamique la mise en œuvre de choses comme des méthodes et des propriétés est assez facile, mais je n'ai trouvé aucune documentation sur dynamiquement la mise en œuvre des interfaces et des conversions à eux.
En supposant que cela est possible, comment est-il difficile susceptible d'être? (Vous pouvez supposer que je suis un décent programmeur avec beaucoup d'expérience des choses comme réflexion, mais de nouveau à la dynamique du cadre.)
Existe-il des ressources qui pourraient aider à me diriger dans la bonne direction pour la mise en œuvre de quelque chose comme cela? Ou même les échantillons où ce genre de chose a déjà été fait, je peux l'utiliser comme un point de départ?