Utilisation de Reflection.Emit pour créer une classe implémentant une interface
J'ai besoin de générer une classe à l'aide de la Réflexion.Émettent qui implémente l'interface suivante.
public interface IObject
{
T Get<T>(string propertyName);
}
Quelqu'un aurait-il un exemple de la façon dont je voudrais émettre le suit comme un simple cas de test?
class GeneratedObject : IObject
{
public T Get<T>(string propertyName)
{
//this is the simplest possible implementation
return default(T);
}
}
source d'informationauteur karma
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à l'aide de la Réflexion.Émettre, vous devriez vraiment prendre une copie de la De la réflexion.Émettre de la langue de complément pour Réflecteur. Tout n'est pas parfait, il devrait vous obtenir au moins 95% de la sorte à un code émis.
Je n'ai pas de compilateur à portée de main, mais quelque chose comme cela devrait fonctionner:
Je crois AutoMapper et/ou LinFu le fera pour vous. Vous pouvez certainement créer une instance d'une interface à l'aide de AutoMapper, je l'ai fait.
Vous avez oublié de COCHER le retour:
Paraît-il, vous voulez faire de l'accès rapide à des propriétés de l'objet par son nom, sans réflexion au moment de l'exécution.
À l'aide de Yappi et de ses Biens<> classe, vous pouvez mettre en œuvre étant donné interface comme ceci:
et ensuite l'utiliser comme ceci:
Avez-vous encore besoin IObject et de type dynamique de construction?