Je remarque qu'il existe une méthode de System.Reflection.Assembly
, qui est Assembly Load(byte[] rawAssembly)
.Opération opposée à Assembly Load (octet [] rawAssembly)
Je me demande s'il y a une opération opposée comme byte[] Store(Assembly assembly)
. Si non, comment puis-je convertir un objet d'assemblage à byte[]
pour appeler totalement Assembly Load(byte[] rawAssembly)
en mémoire sans écrire l'assembly dans un fichier? Merci! Commentaire: La question vient du fait que j'utilise une bibliothèque tierce qui me renvoie une instance d'assemblage, et je dois utiliser la réflexion pour appeler ses méthodes. Je ne sais pas comment la bibliothèque crée cet objet d'assemblage. Je me demande simplement si je peux stocker l'objet d'assemblage à byte [] et le recharger avec 'Assembly Load (byte [] rawAssembly)'. Merci!
L'ensemble vous avez à l'esprit: où est-il venu ? A-t-il été créé en mémoire (AssemblyBuilder etc)? Ou est-ce que ça vient d'un fichier? –
pourquoi ne pas lire le fichier en tant que flux binaire? –
Voici une question sur la poule et l'oeuf. Si vous avez un octet [] qui représente un assemblage, le stocker n'est jamais un problème. FileStream peut l'écrire dans un fichier, MemoryStream peut le stocker en mémoire. Le problème de l'œuf est d'où vient l'octet []. Le créer complètement à partir de zéro n'est pas réalisable sans l'aide significative de, disons, Reflection.Emit. Vous * utilisez * toujours un fichier si vous utilisez System.CodeDom, même si vous ne demandez que de la mémoire. –