Какие атрибуты позволяют вам ограничить доступ к вашим DLL? - PullRequest
4 голосов
/ 12 мая 2011

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

Просто чтобы прояснить, этот вопрос задает:

  1. У меня есть сборка A и сборка B.
  2. Сборке B необходим доступ к некоторым элементам в сборке A.
  3. Обе сборки будут отправлены другим в виде программного продукта.
  4. Я хочу, чтобы только сборка B могла видеть элементы в сборке A.
  5. Любой, кому нужно что-то использовать в сборке A, должен будет делать это через сборку B. Все участники сборки A - всескрытый / внутренний, чтобы сторонние пользователи не могли их видеть.

Ответы [ 4 ]

4 голосов
/ 12 мая 2011

Вы можете использовать InternalsVisibleTo Attribute , чтобы разрешить сборкам, ссылающимся на вашу сборку, видеть классы и элементы, помеченные как internal. Я полагаю, что нет никакого способа предотвратить сборку ссылаться на вашу сборку и получить доступ ко всем public классам и членам.

Примечание: используя отражение, любая сборка может получить доступ к любому классу или члену, независимо от того, является ли это public или internal (или private), при условии, что приложение выполняется с полным доверием (что обычно имеет место ).

1 голос
/ 12 мая 2011

Сборки друзей - это то, что вы ищете:

Друг сборки - это сборка, которая может получить доступ к другу другой сборки (Visual Basic) или внутренние (C #) типы и участники. Если вы идентифицируете сборка как друг сборка, вас нет больше надо отмечать типы и элементы как публичный, чтобы они доступ к другим сборкам.

0 голосов
/ 12 мая 2011

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

Я использовал эту ссылку в качестве ссылки.

http://msdn.microsoft.com/en-us/library/4w8c1y2s(v=vs.71).aspx

Длясам код DLL, попробуйте использовать internal, чтобы пометить элементы, к которым имеет доступ только сборка.Для предметов, действительно доступных внешнему миру, пометьте как общедоступные.

0 голосов
/ 12 мая 2011

Нет таких атрибутов сборки, есть только один атрибут сборки, связанный с видимостью типа, который предоставляет доступ к внутренним компонентам сборки другими сборками - InternalsVisibleToAttribute .

...