Должен ли я установить каждый объект WinForm, например, текстовое поле или кнопку, публичный? Каковы риски? - PullRequest
1 голос
/ 05 ноября 2011

Я заметил высокий спрос в моих проектах на такие объекты, как текстовые поля или кнопки public.

Есть ли проблемы с их настройкой?

Что на самом деле означает публичный, приватный, статический?

Ответы [ 5 ]

3 голосов
/ 05 ноября 2011

Вы не должны, для чистого дизайна.

В действительности вы должны поместить логику своего приложения вне форм!Однако, если вы хотите сохранить логику внутри форм, вы должны, по крайней мере, предоставить им открытые свойства и методы, не предоставляя прямой доступ к элементам управления форм.

Например, вы можете предоставить такие вещи, как метод «EnableSave» или«QuitApplication» или «UpdateState».

3 голосов
/ 05 ноября 2011

Модификаторы доступа (Руководство по программированию в C #)

public

Доступ к типу или элементу может быть получен из любого другого кода в той же сборке или другой сборкекоторый ссылается на него.

private

Доступ к типу или члену возможен только с помощью кода в том же классе или структуре.

protected

Доступ к типу или члену возможен только с помощью кода в том же классе или структуре или в классе, производном от этого класса.

internal

Доступ к типу или элементу возможен из любого кода в той же сборке, но не из другой сборки.

внутренняя защита

Тип илиДоступ к элементу может получить любой код в сборке, в которой он объявлен, или из производного класса в другой сборке.Доступ из другой сборки должен осуществляться в объявлении класса, которое происходит от класса, в котором объявлен защищенный внутренний элемент, и оно должно осуществляться через экземпляр типа производного класса.

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

3 голосов
/ 05 ноября 2011

public, private и т. Д. Называются модификаторами доступа и определяют правила, для которых другому коду разрешен доступ к каждому члену.

Технических проблем с установкой контроля как общедоступного нет. Но я бы не рекомендовал это. Публичное общение - хороший рецепт для создания кода для спагетти.

Сохраняйте весь доступ к элементам управления в вашей форме и предоставляйте только небольшой набор открытых методов с простым интерфейсом для внешних участников для доступа к данным и операциям в форме.

2 голосов
/ 05 ноября 2011

Public, private и static имеют дело с областью видимости и тем, что может говорить с объектами / методами

Public -> Другие классы могут создавать экземпляр вашего класса (при условии, что класс public) и напрямую вызывать этот объект / метод

Private -> Другие классы могут создавать экземпляр вашего класса (при условии, что класс public), но не могут получить доступ к этому объекту / методу

Static -> Другие классы могут напрямую обращаться к этому объекту / методу (при условии, что класс public, а метод public static), например: YourClassName.ObjectOrMethod без необходимости создавать экземпляр YourClassName

1 голос
/ 05 ноября 2011

Лучший модификатор доступа для компонента графического интерфейса при непосредственном доступе к нему: внутренний (например, по умолчанию в VB.NET).

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

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