C # - Получение ссылок ссылки

Я построил проект библиотеки классов, который ссылается на пару DLL. В конструкторе моего проекта библиотеки классов я использую некоторые перечисления из одной из упомянутых dll. При использовании моей библиотеки классов в другом проекте возможно ли не добавлять ссылки на мою библиотеку DLL и те, на которые ссылается мой проект библиотеки классов?

10.12.2008 17:13:37
6 ОТВЕТОВ

Вам нужно только сослаться на DLL. Вы ссылаетесь только на то, что используете в сборке; сборки являются полностью самоописываемыми отдельными единицами и, таким образом, не требуют ссылки на ссылки, на которые ссылаются ссылки на сборку (я издеваюсь с моим повторным использованием слова 'ссылка' здесь, кстати :-).

Представьте себе , если вы так должны делать это - ссылки BCL много разных вещей, не говоря уже компоненты третьей стороны, представьте , сколько усилий вы должны пойти только получать ссылки прямо !!

1
10.12.2008 17:17:57

Это зависит от того, что вы подразумеваете под ссылкой внутри страны .

Если ваш проект приложения использует тип A из вашей библиотеки классов, и этот класс не предоставляет никаких открытых типов из других библиотек, сторонних или нет, вам не нужно добавлять какие-либо ссылки на библиотеку классов, содержащую тип A.

Однако, если тип A предоставляет некоторые открытые свойства, методы, возвращающие типы или принимающие параметры типов, или, возможно, тип A происходит от типа, который находится в какой-либо другой сборке, то вам также потребуется ссылка на эту другую сборку.

Таким образом, если вы действительно имеете в виду использование внутри , тогда не нужно добавлять больше, чем просто одну ссылку на вашу библиотеку классов.

Однако, если компилятор жалуется, то это имеет значение.

2
10.12.2008 17:26:42
Если библиотека действительно предоставляет типы своих собственных ссылок на сторонних производителей, то в целом это приводит к огромным ошибкам. Инкапсуляция людей !!
ljs 11.12.2008 06:38:04

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

0
10.12.2008 17:29:53

Я не уверен, что вы пытаетесь сделать, но вам не нужно ссылаться на какую-либо сборку, если вы этого не хотите. Вы можете использовать отражение. Обычно считается взломом и не рекомендуется, но иногда необходимо. Здесь у вас есть статья, объясняющая, как.

-1
10.12.2008 21:55:46

Возьмите свой собственный enum в ctor и переведите его на сторонний enum. Я полагаю, что это не даст вашей вызывающей стороне ссылаться на стороннюю сборку (хотя, конечно, она все равно должна быть доступна во время выполнения, чтобы ваш код работал).

0
10.12.2008 18:04:54

Я думаю, что lassevk объяснил это кратко, но просто хотел добавить, что хотя вам не нужно ссылаться на эти дополнительные сборки, используемые библиотекой DLL (опять же, при условии, что они используются только внутри и не доступны), вам все равно нужно сделать их доступными для ваше приложение. То есть они должны быть доступны для поиска - либо рядом с приложением, либо в GAC, иначе использующая их DLL не сможет их найти.

0
10.12.2008 18:48:05