Почему помощники NetFx являются внутренними? - PullRequest
0 голосов
/ 06 августа 2011

NetFx - это отличный набор помощников, доступных через NuGet. Но я не понимаю, почему все классы помощников являются внутренними? Как мне относиться к этому, если мне нужен помощник из нескольких проектов?

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

1 Ответ

1 голос
/ 08 августа 2011

Краткий ответ: потому что они были явно разработаны таким образом .Т.е. помощники должны быть внутренними по отношению к тем частям, которые в них нуждаются, и не должны быть помещены в «Common.dll или Helpers.dll».Длинный ответ, возможно, с более подробной информацией об этом решении, может быть предоставлен только (оригинальным) автором.

Относительно вашего исходного вопроса: вы, вероятно, включили бы этого помощника в несколько проектов.если вы действительно хотите, чтобы они жили в отдельной сборке, и не хотите изменять код (изменение внутреннего на общедоступный), вы можете использовать атрибут InternalsVisibleTo для этой сборки, в котором перечислены все другие ваши проекты / сборки, которые нужныиспользовать их.Нельзя сказать, что это хорошее решение - оно работает явно против первоначального дизайна NetFx - но по крайней мере оно избавит вас от ручного труда при обновлении.

В общем, я бы не стал принимать решение о зеленом полелибо («обычная» DLL, либо строго локальная функция).У обоих есть свои очевидные плюсы и минусы.Но вы не спрашивали об этой части истории, то есть, кажется, вы уже приняли решение; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...