powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Каким образом можно заиметь общий код в приложении WPF?
16 сообщений из 16, страница 1 из 1
Каким образом можно заиметь общий код в приложении WPF?
    #39254547
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажем, у меня есть WPF-приложение и такой код (что он делает - неважно, просто любой код):

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        AppDomain.CurrentDomain.UnhandledException 
            += new UnhandledExceptionEventHandler(UnhandledExceptionHandler);

        ServiceInjector.InjectServices();

        base.OnStartup(e);

        MainWindow window = new MainWindow();
        window.Show();
    }

    void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs args)
    {
        var exceptionObj = args.ExceptionObject as Exception;
        if (exceptionObj == null)
            exceptionObj = new NotSupportedException(
                "Unhandled exception doesn't derive from System.Exception: " 
                + args.ExceptionObject.ToString());

        // TODO: Logging...

        var messageBox = GetService<IMessageBoxService>();
        messageBox.Show(
            exceptionObj.Message, 
            "Unhandled exception.",
            MessageBoxButton.OK,
            MessageBoxImage.Exclamation);

        Environment.Exit(1);
    }

    #region Resolve service dependencies members.
    
    public TServiceContract GetService<TServiceContract>()
        where TServiceContract : class
    {
        return ServiceContainer.Instance.GetService<TServiceContract>();
    }

    #endregion Resolve service dependencies members.
}



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

Читал про базовый класс для App (который наследуется от Application), но там какие-то проблемы - то с файлом App.g.i.cs, то с App.xaml. Ну и желательно, чтобы не только для WPF был пригоден подход, но и для консольных и других типов приложений.

Но тут хотя бы для WPF пока.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39254861
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, собственно, подход для любого типа приложения стандартный - в решение добавляется библиотека классов и используется совместно всеми решениями, WPF - не исключение
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39254862
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dude42но там какие-то проблемы - то с файлом App.g.i.cs, то с App.xamlничто не мешает создавать экземпляр приложения напрямую http://professorweb.ru/my/WPF/UI_WPF/level7/7_1.php
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39254867
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dude42, оформите NuGet пакет и имейте его где пожелаете.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39255443
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно свои Template'ы создавать, как для части проектов, так и в качестве проекта.
И тот, и другой могут быть многофайловым.
Сам пользуюсь парой шаблонов, чтоб не создавать каждый раз одно и тоже ручками
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256111
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman Mejtesможно свои Template'ы создавать, как для части проектов, так и в качестве проекта.
И тот, и другой могут быть многофайловым.
Сам пользуюсь парой шаблонов, чтоб не создавать каждый раз одно и тоже ручками
Можете привести пример или ссылку на пример?
skyANADude42, оформите NuGet пакет и имейте его где пожелаете.
Тоже, можете привести ссылку, как это сделать - создать пакет такой со своим шаблоном?


Но вообще, я бы хотел только с помощью свойств языка. Я бы вообще не видел проблем - базового класса, на мой взгляд, должно хватать с лихвой. Но тут всякие сложности - разделили класс приложения на два, поэтому, если создать свой и отнаследоваться, то надо в каждом новом проекте руками удалять App.g.i.cs и прочие настройки делать, которые сделал за меня шаблон "WPF Application". Т. е. получается, что без своего шаблона не обойтись?
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256112
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про ссылки - я, пожалуй, сам погуглю. Что это я, хехе. :)
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256122
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dude42Но вообще, я бы хотел только с помощью свойств языка. Я бы вообще не видел проблем - базового класса, на мой взгляд, должно хватать с лихвой. Но тут всякие сложности - разделили класс приложения на два, поэтому, если создать свой и отнаследоваться, то надо в каждом новом проекте руками удалять App.g.i.cs и прочие настройки делать, которые сделал за меня шаблон "WPF Application". Т. е. получается, что без своего шаблона не обойтись?Повторю, использовать XAML в WPF никто не заставляет. Можно ВСЁ делать исключительно кодом, в том числе и класс приложения.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256126
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПовторю, использовать XAML в WPF никто не заставляет. Можно ВСЁ делать исключительно кодом, в том числе и класс приложения.При этом двухкомпонентные юзерконтролы например (xaml+cs), я без проблем выносил в отдельную библиотеку, выносить ресурсные словари также никто не запрещает, двухкомпонентный application выносить не пробовал, но думаю, что тоже проблем не должно возникать.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256142
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProDude42Но вообще, я бы хотел только с помощью свойств языка. Я бы вообще не видел проблем - базового класса, на мой взгляд, должно хватать с лихвой. Но тут всякие сложности - разделили класс приложения на два, поэтому, если создать свой и отнаследоваться, то надо в каждом новом проекте руками удалять App.g.i.cs и прочие настройки делать, которые сделал за меня шаблон "WPF Application". Т. е. получается, что без своего шаблона не обойтись?Повторю, использовать XAML в WPF никто не заставляет. Можно ВСЁ делать исключительно кодом, в том числе и класс приложения.
Ну, я столкнулся с такой проблемой, что если не написать в замле класса App такое подключение ресурсов

Код: xml
1.
2.
3.
4.
5.
6.
<Application.Resources>
    <!--Attach Default Fluent Control's Theme-->
    <ResourceDictionary
      Source="pack://application:,,,/Fluent;Component/Themes/Office2010/Silver.xaml">
    </ResourceDictionary>
  </Application.Resources>



то флюэнтовские стили не будут применяться к их контролам.

Ну и кодом всё делать - всё же, я не для того WPF учил, чтобы всё делать в сител Win Forms. Да и просто могут потребовать всякие дизайнеры, чтобы в замле был интерфейс размечен.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256143
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProDude42но там какие-то проблемы - то с файлом App.g.i.cs, то с App.xamlничто не мешает создавать экземпляр приложения напрямую http://professorweb.ru/my/WPF/UI_WPF/level7/7_1.php
Вот это можно делать во всех "родственных" приложениях: Forms, WPF, UWP? Я во всех них могу единообразно подписаться на AppDomain.CurrentDomain.UnhandledException, вызвать свой ServiceInjector.InjectServices() и сделать тому подобные базовые инициализации?

Или в каждом типе приложений свой подход к обработке необработанных исключений и прочих "базовых инициализациях"?

Т. е. я могу написать общий класс для всех таких типов оконных приложений в .NET или лучше создать, как тут советовали, базовый темплейт для каждого типа, где в соответствии со спецификой каждого типа приложения раскидать эти свои обработки необработанных исключений, инициализацию сервисов и прочий "инициализирующий" код?
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256145
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dude42"родственных" приложениях
"Родственных" - в смысле "оконных", "дотнетовских". Не знаю, как ещё сказать.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256163
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почитал про шаблоны - похоже, это то, что мне нужно. Т. е. это будет проще, чем делать свой базовый класс App для WPF-приложения с учётом всех заморочек дефолтного шаблона.

Т. е. я создаю новое приложение WPF по дефолтному шаблону, добавляю в него код из моего первого поста и сохраняю как новый шаблон. Теперь каждое новое WPF-приложение я начинаю со своего нового шаблона. Правильно я понимаю?
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256165
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и так для каждого типа проекта: создаю UWP по дефолтному шаблону, добавляю нужный мне "базовый" код и сохраняю как новый шаблон. И т. д. Так?
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256171
Dude42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProDude42но там какие-то проблемы - то с файлом App.g.i.cs, то с App.xamlничто не мешает создавать экземпляр приложения напрямую http://professorweb.ru/my/WPF/UI_WPF/level7/7_1.php
Да, это я тоже прочитал. Но штука в том, что это всё равно же придётся оформить в виде шаблона, чтобы каждый раз не править руками дефолтные файлы - базового "пустого" WPF-прилоежния же нет, есть только с созданием App:Application. А мне, по сути, не надо свои огороды городить - надо просто добавить некоторый начальный код в каждое своё новое приложение. Поэтому свой шаблон на основе дефолтного шаблона будет проще и быстрее, по-моему, для решения моей задачи.
...
Рейтинг: 0 / 0
Каким образом можно заиметь общий код в приложении WPF?
    #39256174
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dude42,

ну примерно, при чем можно в шаблоне использовать собственные сборки, но их надо добавить в GAC (сборки для генеренации, а не для подключения).
К примеру у меня есть шаблон компонента, я просто ввожу название компонента, а все файлы которые добавляются в проект (ресурсы, модели и прочее) само создается, с нужными названиями и нужным содержимым
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Каким образом можно заиметь общий код в приложении WPF?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]