Проблема со ссылкой на библиотеку классов - PullRequest
2 голосов
/ 13 июня 2010

Я создаю библиотеку классов и использую ее пространство имен по умолчанию как «Система». Предположим, я создаю общую структуру данных, скажем PriorityQueue, и помещаю ее в пространство имен System.Collections.Generic.

Теперь, когда я ссылаюсь на эту библиотеку из другого проекта, я больше не вижу PriorityQueue в пространстве имен System.Collections.Generic. Хотя в этом проекте есть ссылка на библиотеку, я не могу получить доступ ни к одному из классов в нем.

Мой вопрос был о том, что mscorlib и System.dll имеют одинаковые пространства имен, но классы из обеих сборок доступны, но почему не моё? Если я помещу открытый класс в пространство имен System.Collections.Generic в своей библиотеке классов, а затем ссылаюсь на эту библиотеку в проекте и использую оператор типа «using System.Collections.Generic», все равно, почему я не могу получить доступ к своему классу там? 1005 *

Это был эксперимент, который я провел, я знаю, что использование пространства имен System не рекомендуется в пользовательской библиотеке классов, но я хочу знать причину, по которой я не могу получить доступ к своему классу в этом особом случае?

Пожалуйста, кто-нибудь пролил свет на это.

PS: В прошлый раз я задавал похожий вопрос, но неправильно его сформулировал, поэтому людей неправильно поняли, а я не получил ответ. На этот раз я стараюсь как можно точнее изложить это правильно. Извините за недопонимание.

Ответы [ 2 ]

1 голос
/ 13 июня 2010

Проблема возникает, когда вы используете «Ссылку на проект», а не «Ссылку на сборку».

Используйте «Справочник по сборке».

Это настолько плохая идея, что я не хочу углубляться в основные причины.

Обновление

Я предполагаю, что когда вы используете ссылку на проект (из вашего проекта пространства имен System), проблема возникает из-за того, что сборка не знает, что она должна разрешить зависимость от вашего ссылочного проекта, а вместо этого пытается разрешить ее из из сборок , на которые уже есть ссылки, т.е. System.dll. Это очевидно не существует в System.dll. Если вы добавите прямую ссылку на встроенную версию вашей dll, сборка сможет разрешить ее.

0 голосов
/ 13 июня 2010

Я только что протестировал некоторый код и могу расширить пространство имен System в своем собственном проекте, а затем вызвать новые классы из какого-то другого проекта в том же решении.Я не знаю, почему вы не можете это сделать.

...