7
votes

Comment détecter si un type est une dynamicproxy généré sans référencer le château dynamicproxy?

J'utilise le château dynamicproxy et je me demandais s'il y a un moyen de détecter si un type est un proxy sans référencer le château dynamicproxy?

Alors que j'utilise le château dynamicproxy comme exemple que je voudrais que je voudrais que le code fonctionnerait pour tout en type généré de la mémoire. xxx

merci


0 commentaires

4 Réponses :


0
votes

jusqu'à présent, j'ai ce code FUGLY

    private static bool IsDynamic(Type type)
    {
        try
        {
            var location = type.Assembly.Location;
            return false;
        }
        catch (NotSupportedException)
        {
            return true;
        }
    }


1 commentaires

Comme Ayende a souligné groups.google.com/group/castle- Project-Users / Browse_thread / ... emplacement Lancer une exception est un effet secondaire. Il en va de même si vous utilisez Assembly.load (fichier.readallbytes ("Nhibernate.dll"));



0
votes

Cela semble fonctionner pour château: xxx


2 commentaires

Mais cela est spécifique à la mise en œuvre du château. Pourrait ne pas être vrai pour les autres générateurs de proxy :(


Cela ne fonctionnera pas avec le coffre et le prochain v2.2 car les proxies ont maintenant un espace de noms



10
votes
type.Assembly.FullName.StartsWith("DynamicProxyGenAssembly2")

5 commentaires

besoin de quelque chose de non spécifique au château


Vous souhaitez détecter si le type est un proxy dynamicproxy. Comment est-ce non spécifique au château?


J'utilise dynamicproxy comme exemple pour que les gens puissent facilement savoir de quoi je parle. Mais je cherche du code qui me dira s'il s'agit d'un type généré d'exécution.


Il n'y a pas de solution unique pour cela. Je crains. Vous pouvez générer du type, enregistrer l'assemblage que vous l'avez généré pour déposer. Comment sauriez-vous que s'il a été généré ou s'il y avait depuis le début? Pourquoi avez-vous besoin de cela du tout?


@ Jeffn825: C'est ce que j'ai utilisé ... :)



3
votes

Vous pouvez rendre votre type dynamique implémente une interface spécifique: xxx


0 commentaires