Я замечаю очень странное поведение при использовании макета класса, который выглядит следующим образом:
// Contents of assembly A:
public class MyParentClass
{
public class NestedClass
{
}
}
// Contents of assembly B:
public class AnotherClass : List<MyParentClass.NestedClass>
{
}
Я могу добавить сборку A как зависимость сборки B. Этот пример будет компилироваться без каких-либо сообщений об ошибках, но когда речь идет, например, о загрузке сборки B в качестве ссылки для модульного тестирования, я получу эту ошибку, когда она приходит время для компиляции юнит-тестов:
Не удалось загрузить файл или сборку 'AssemblyB, версия = 1.0.0.0, культура = нейтральная,
PublicKeyToken = null 'или одна из его зависимостей. Система не может найти
указанный файл.
Сборка, которую генерирует этот код, действительно работает, и я могу запустить созданную DLL с помощью Redgate Reflector и увидеть мой код, как и ожидалось, но модульные тесты отказываются загружать его.
Я почти уверен, что эта проблема связана с тем фактом, что я вызываю вложенный класс, который находится в другой сборке, и я, вероятно, в конечном итоге все равно буду рефакторинг этого дизайна, но мне бы очень хотелось знать, почему это так не работает, как ожидалось. Если бы возникла проблема с использованием классов таким способом, я бы ожидал, что компилятор сгенерирует исключение.
Спасибо за ваше время.