Могу ли я предоставить только часть открытых классов .NET DLL через другую DLL "API"? - PullRequest
3 голосов
/ 04 мая 2010

Я разрабатываю приложение WPF, которое использует DLL, возможно, с 40 открытыми классами. Мне нужно, чтобы они были общедоступными по ряду причин, включая простоту связывания данных и запутывание. Я хотел бы позволить другим людям использовать только часть этих классов в качестве API для моего программного обеспечения.

Я подумал, что создам основную библиотеку (core.dll) и библиотеку API (coreAPI.dll) с API-библиотекой API, на которую будут ссылаться в новом проекте. Есть ли способ разрешить coreAPI.dll выставить только несколько классов, существующих в core.dll? Это не столько проблема безопасности, сколько прежде всего желание просто скрыть некоторые нежелательные классы от Visual Studio Intellisense.

Опять же, внутренние классы для тех, которые я хочу скрыть, на самом деле не вариант, потому что мне нужно связать данные некоторых из этих классов в WPF, и для этого они должны быть открытыми. Есть ли другие способы сделать это?

Ответы [ 2 ]

3 голосов
/ 04 мая 2010

Как уже упоминал Дэмиен, если вам нужно только спрятаться от Intellisense, вы можете добавить следующий атрибут к вашим скрытым классам:

[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)]
0 голосов
/ 04 мая 2010

Если основной проблемой является Intellisense, то перемещение этих классов в отдельное пространство имен наверняка поможет?

Конечно, вы можете разделить классы на две отдельные сборки. У вас могут возникнуть некоторые проблемы с необходимостью предоставления большего количества классов, чем вы хотите (поскольку они теперь находятся в отдельных сборках), которые могут быть решены с помощью атрибута InternalsVisibleTo

...