Как фреймворк .net формируется в классах. (Vb.net) - PullRequest
0 голосов
/ 11 сентября 2009

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

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

(1) Microsoft делает что-то в последнюю минуту, чтобы вкладывать все вещи в приват?

(2) Является ли их путь предпочтительным, или я должен придерживаться своих друзей-аксессоров?

1 Ответ

1 голос
/ 11 сентября 2009

Вложенная форма лучше, потому что она обеспечивает правильную инкапсуляцию и означает, что окончательный элемент управления окажется в одном удобном аккуратном пакете для распространения. Если ни один из них не вызывает беспокойства, продолжайте делать это по-своему. Но если вы хотите хотя бы попробовать вложить класс, вы можете сделать что-то вроде этого:

  1. Используйте конструктор, чтобы создать вложенную форму вне класса, как обычно.
  2. Добавьте вторую пустую форму как частную вложенную форму, как это делается в примерах CLR с тем же именем, что и форма, созданная на шаге 1.
  3. Перенесите код с *.designer.vb или *.designer.cs для первой формы в конструктор для второй формы. В основном это будет просто большая копия / вставка.
  4. Удалите форму из шага 1. Возможно, вы захотите сохранить, переместив ее в отдельный проект библиотеки классов, чтобы вы могли использовать ее, когда вам нужно внести изменения.
...