WindowsFormsApplicationBase не существует в пространствах имен C #? - PullRequest
7 голосов
/ 01 ноября 2010

Я читал, что WindowsFormsApplicationBase находится в пространстве имен Microsoft.VisualBasic.ApplicationServices

Нужно ли действительно добавлять полноценные службы Microsoft.VisualBasic.ApplicationServices только для того, чтобы получить WindowsFormsApplicationBase в c #?Как это повлияет на размер и производительность моего приложения на c #?

Ответы [ 2 ]

10 голосов
/ 01 ноября 2010

Это не так дорого, как можно подумать. Тип WindowsFormsApplicationBase присутствует в сборке framework , называемой Microsoft.VisualBasic.dll. Все, что вам нужно сделать, это сделать так, чтобы ваш проект ссылался на эту сборку, и этот тип будет доступен для вашего приложения. Вам не нужно связывать эту сборку с вашим приложением, поскольку она включена в дистрибутивы .NET Framework, , даже если присутствует только профиль клиента.

Таким образом, единственной реальной «стоимостью» использования этого класса является загрузка сборки Microsoft.VisualBasic.dll в ваш домен приложений во время выполнения, что на самом деле должно быть незначительным для приложения WinForms.

1 голос
/ 21 марта 2018

Чтобы ответить на вопрос, нужно ли вам добавлять WindowsFormsApplicationBase в программу на C #, нет, не нужно. Программа на C # использует Класс приложения . В WindowsFormsApplicationBase есть вещи, которые доступны отдельно. Например, свойство ApplicationContext в WindowsFormsApplicationBase имеет экземпляр класса ApplicationContext, который может быть дополнительно создан в C #.

Очевидно, что WindowsFormsApplicationBase предназначена для упрощения приложений форм VB.Net, но она скрывает вещи, которые было бы легче увидеть в программах на C #. Программа на C #, сгенерированная VS, будет иметь метод Main, подобный следующему:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

Это практически все приложение, за исключением класса Form1. В VB.Net эта обработка скрыта в классе WindowsFormsApplicationBase. Методы WindowsFormsApplicationBase.OnStartup и WindowsFormsApplicationBase.OnShutdown совершенно не нужны в C #, поскольку код, который будет помещен в них для VB.Net, можно просто поместить в метод C # Main. Класс WindowsFormsApplicationBase имеет метод DoEvents, который никому не нужен, и программисты на C # знают это. Класс WindowsFormsApplicationBase поддерживает заставки, которым нет эквивалента в C #, за исключением C #, мы можем реализовать заставки различными способами.

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