2012-11-12 3 views
2

У меня есть 2 формы и 1 класс. Я сделал класс Статическим классом. Он имеет два метода с общедоступными модификаторами. Ex: Public string PrintHello(), Public void Task1()Избегание общедоступных методов в другом классе?

Я хочу, чтобы эти методы были доступны из форм Form1 и Form2. Я понимаю, что использование «Общественного» модификатора не очень хорошо, поэтому я посмотрел на «Внутренний» модификатор и, похоже, выполнил эту работу.

В принципе, я хочу создать безопасный способ доступа к моему классу. Что было бы лучшим способом сделать это и вы могли бы привести пример того, как это сделать?

Спасибо

+4

Определите «безопасный». Защищать от чего? –

ответ

0

Модификаторы доступа не обеспечивают безопасность кода. Кто-то действительно хочет использовать ваши частные методы, которые он может использовать ILDASM для декомпилирования вашего кода и использования их, что было бы всего лишь одним примером многих.

Доступные модификаторы доступны, чтобы вы могли программировать с использованием объектно-ориентированного кода. В целом: Частные модификаторы являются внутренними по отношению к вашей реализации класса, а другие классы или уровни вашей дозовой дозы не НУЖНО, ни хотите, чтобы знать о существовании.

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

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

0

Зависит от того, где вы думаете, что код, который вызывает эти методы, вероятно, будут жить. Если он только будет вызван из класса, который определил этот метод, тогда он должен быть закрытым. Если вы хотите только вызывать его из той же сборки (dll), но не хотите вызывать методы из других DLL, вы должны сделать ее внутренней. Таким образом, вы можете отправить свою DLL в другие проекты, и вам не нужно беспокоиться о поддержке своих методов (потому что они не будут иметь доступ к вашим методам).

Но если вы делаете libarary/dll общего назначения и т. Д., Тогда методы должны быть общедоступными.

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

Смежные вопросы