Как сделать внутренний класс сопоставления для NHibernate? - PullRequest
2 голосов
/ 17 февраля 2011

Я сделал внутренние классы для своих отображений и повсюду поставил "default-lazy = false".Через некоторое время я решил пойти с полной ленивостью и убрал эту настройку.Внезапно почти все не в состоянии выполнить.Исключение, которое я получаю: «Невозможно выполнить запрос ... System.TypeLoadException: доступ запрещен ...».Это, конечно, из-за того, что классы помечены как внутренние, и поэтому они не доступны для nhibernate.dll.Вот почему я также добавил в AssemblyInfo.cs строки:

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

Но это не помогает.Что я делаю не так?

1 Ответ

1 голос
/ 17 февраля 2011

Возможно, попробуйте добавить:

[assembly: InternalsVisibleTo("NHibernate")]

Если это не работает, посмотрите на трассировку стека TypeLoadException и проверьте, из какого DDL выдается исключение - добавьте для него атрибут InternalsVisibleTo.

Мне кажется, что NHibernate DDL пытается сделать что-то более умное, теперь включена отложенная загрузка ... возможно, ему по какой-то причине нужен доступ к внутреннему классу (неопределенно, но я не знаю, исходный код NHibernate)

EDIT:

попробуйте добавить:

[assembly: InternalsVisibleTo("mscorlib")]

Вы должны указать открытый ключ / версию используемой сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...