2015-07-13 5 views
2

Есть ли способ ограничить доступ класса или объекта класса к определенной функциональности (например, запись на консоль)?Ограничить доступ класса к определенным методам (например, написание на консоль)

В настоящее время у меня есть проект главной консоли, который пишет и читает с консоли. Он также загружает различные файлы библиотеки DLL (например, мини-программы) и использует их методы.

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

Скажите, что кто-то пишет расширение (мини-программу) для моего проекта. Я бы не хотел, чтобы он свободно писал консольное приложение.

P.S. Мой вопрос не обязательно применяется только для консольных приложений.

+0

Если эти DLL внутренне называют 'Console', то кто-то скорее выключен. Я думаю, что лучшее, что вы можете сделать, это иметь четко определенную спецификацию для do's и не использовать DLL для вашей инфраструктуры. –

+2

В частности, для консоли вы можете [сделать это] (http://stackoverflow.com/q/1412288/1997232). – Sinatr

+0

@YuvalItzchakov Я хочу аннулировать их Console.WriteLine, если у них не должно быть привилегий для его использования. Они будут знать, что не должны, но вы знаете их хакеров: D – Bonnev

ответ

0

Я предлагаю вам написать свой собственный CustomConsole, чтобы никто не мог его использовать. Поскольку исходная консоль является стандартной и встроена в ОС, единственный способ получить контроль над ней - это то, что сказал вам Sinatr. И снова они могут открыть его. Если вы работаете со своей собственной консолью, вам не придется беспокоиться о том, кто в ней пишет или нет. После того, как вы всегда можете подключить стандартную консоль к своему «менеджеру», чтобы отфильтровать сообщение и сохранить те, которые вы хотите, и удалить остальные.

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