/ / Comment créer une classe de mapping interne pour NHibernate? - c #, nhibernate

Comment créer une classe de mapping interne pour NHibernate? - c #, nhibernate

J'ai fait des classes internes pour mes cartographies et mispartout "default-lazy = false". Au bout d’un moment, j’ai décidé d’aller en paresseux et d’enlever ce paramètre. Tout à coup, presque tout échoue. L'exception que je reçois est "Impossible d'exécuter la requête ... System.TypeLoadException: l'accès est refusé à ...". Ceci est bien sûr dû au fait que les classes sont marquées comme internes et que, par conséquent, elles ne sont pas accessibles par nhibernate.dll. C’est pourquoi j’ai aussi ajouté aux lignes AssemblyInfo.cs:

[assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]
[assembly: InternalsVisibleTo(InternalsVisible.ToCastleCore)]
[assembly: InternalsVisibleTo("MyUnitTestsDLL")]

Mais ça n’aide pas. Qu'est-ce que je fais mal?

Réponses:

1 pour la réponse № 1

Peut-être essayer d'ajouter:

[assembly: InternalsVisibleTo("NHibernate")]

Si cela ne fonctionne pas, examinez la trace de pile de TypeLoadException et vérifiez quel type de DDL est émis par l'exception. Ajoutez-y un attribut InternalsVisibleTo.

Je suppose que le NHibernate DDL tente defaire quelque chose d'un peu plus intelligent maintenant le chargement paresseux est activé .. peut-être qu'il doit avoir accès à la classe interne pour une raison ou une autre (vague mais je ne connais pas le code source de NHibernate)

MODIFIER:

essayez d'ajouter:

[assembly: InternalsVisibleTo("mscorlib")]

Vous devez spécifier la clé publique / version de l'assembly que vous utilisez.