Почему класс приложения в проекте UWP имеет конструктор, а класс приложения проекта WPF - нет? - PullRequest
0 голосов
/ 21 октября 2019

Как показано ниже, я заметил, что когда вы создаете проект UWP в VS2019, он создает конструктор public App(){....} в классе приложения App.xaml.cs проекта. Затем этот конструктор можно использовать для вызова (например) методов проекта .NET Standard Class Library в том же решении, как показано во втором блоке кода здесь .

Но, как показано ниже, класс приложения App.xaml.cs проекта WPF не имеет такого конструктора, созданного по умолчанию.

Вопрос Можно ли просто создать конструктор вручную public App(){....} в классе приложения App.xaml.cs проекта WPF и вызовите оттуда метод стандартной библиотеки классов .NET, или это может вызвать проблемы позже?

App.xaml.csпроекта UWP :

using System;
using System.IO;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
......

namespace Test_UWP_Project
{
    /// <summary>
    /// Provides application-specific behavior to supplement the default Application class.
    /// </summary>
    sealed partial class App : Application
    {
        /// <summary>
        /// Initializes the singleton application object.  This is the first line of authored code
        /// executed, and as such is the logical equivalent of main() or WinMain().
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }
..........
............
}

Проект App.xaml.cs из WPF :

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Windows;
.....
.....

namespace Test_WPF_Project
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
    }
}

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Можно ли просто вручную создать конструктор public App () {....} в классе приложения App.xaml.cs проекта WPF и вызвать оттуда метод стандартной библиотеки классов .NET илиэто может вызвать проблемы позже?

Да, вы можете. Как упоминалось в документах , если вы не предоставляете конструктор для своего класса, C # по умолчанию создает его, который создает экземпляр объекта и устанавливает для переменных-членов значения по умолчанию. Поэтому, когда вам нужна какая-либо логика пользовательской инициализации, вы должны определить свой собственный конструктор.

В зависимости от того, что вы хотите сделать, может быть лучше переопределить метод OnStartup класса Appсоздания конструктора, хотя:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        //your code here...
    }
}
1 голос
/ 22 октября 2019

Я никогда не использовал конструктор приложения в WPF, но быстрый тест показывает, что вы можете добавить конструктор к App.xaml.cs, и он будет работать так же, как и любой другой класс. В качестве альтернативы вы также можете обработать событие Application.StartUp. Я не знаю ни одной причины, по которой вы не сможете вызывать что-либо из этих методов.

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