From e89571f599ae49069269d9420a601f3bec53059f Mon Sep 17 00:00:00 2001 From: MariaBelkina <89656988623@mail.ru> Date: Mon, 10 Jun 2024 01:50:02 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=207=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractCompany.cs | 2 +- .../ListGenericObjects.cs | 42 ++-- .../MassiveGenericObject.cs | 104 +++++----- .../StorageCollection.cs | 40 ++-- .../Exceptions/CollectionOverflowException.cs | 25 +++ .../Exceptions/ObjectNotFoundException.cs | 26 +++ .../PositionOutOfCollectionException.cs | 26 +++ .../FormBulldozerCollection.cs | 187 +++++++++++------- ProjectBulldozer/ProjectBulldozer/Program.cs | 26 ++- .../ProjectBulldozer/ProjectBulldozer.csproj | 13 ++ ProjectBulldozer/ProjectBulldozer/nlog.config | 15 ++ 11 files changed, 352 insertions(+), 154 deletions(-) create mode 100644 ProjectBulldozer/ProjectBulldozer/Exceptions/CollectionOverflowException.cs create mode 100644 ProjectBulldozer/ProjectBulldozer/Exceptions/ObjectNotFoundException.cs create mode 100644 ProjectBulldozer/ProjectBulldozer/Exceptions/PositionOutOfCollectionException.cs create mode 100644 ProjectBulldozer/ProjectBulldozer/nlog.config diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/AbstractCompany.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/AbstractCompany.cs index e974703..c92a05f 100644 --- a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/AbstractCompany.cs +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/AbstractCompany.cs @@ -41,7 +41,7 @@ public abstract class AbstractCompany /// /// Вычисление максимального количества элементов, который можно разместить в окне /// - private int GetMaxCount => _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight); + private int GetMaxCount => (int)(_pictureWidth / _placeSizeWidth) * (int)(_pictureHeight / _placeSizeHeight); /// /// Конструктор diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ListGenericObjects.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ListGenericObjects.cs index 4f02aeb..9da9fd6 100644 --- a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ListGenericObjects.cs +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/ListGenericObjects.cs @@ -1,4 +1,5 @@ -using System; +using ProjectBulldozer.Exceptions; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -53,19 +54,26 @@ public class ListGenericObjects : ICollectoinGenericObjects public T? Get(int position) { // Проверка позиции. - if (position < 0 || position >= _collection.Count || _collection == null || _collection.Count == 0) + if (position < 0 || position >= Count) { - return null; + throw new PositionOutOfCollectionException(position); } + + // Выброс ошибки, если выход за границы списка + if (_collection[position] == null) + { + throw new ObjectNotFoundException(position); + } + return _collection[position]; } public int Insert(T obj) { - // Проверка, что не привышено максимальное колличество элементов. + // Выброс ошибки, если переполнение if (Count == _maxCount) { - return -1; - } + throw new CollectionOverflowException(Count); + } // Вставка в конец набора. _collection.Add(obj); @@ -74,16 +82,16 @@ public class ListGenericObjects : ICollectoinGenericObjects public int Insert(T obj, int position) { - // Проверка, что не превышено максимальное колличество элементов. - if (Count == _maxCount) - { - return -1; + // Выброс ошибки, если переполнение + if (Count == _maxCount) + { + throw new CollectionOverflowException(Count); } - // Проверка позиции. - if (position < 0 || position >= _collection.Count || _collection == null || _collection.Count == 0) - { - return -1; + // Выброс ошибки, если выход за границы списка + if (position >= Count || position < 0) + { + throw new PositionOutOfCollectionException(position); } // Вставка по позиции. @@ -94,10 +102,10 @@ public class ListGenericObjects : ICollectoinGenericObjects public T? Remove(int position) { - // Проверка позиции. - if (position < 0 || position >= _collection.Count || _collection == null || _collection.Count == 0) + // TODO Выброс ошибки, если выход за границы списка + if (position >= Count || position < 0) { - return null; + throw new PositionOutOfCollectionException(position); } // Удаление объекта из списка. diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs index 2cc83b0..f9dc667 100644 --- a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/MassiveGenericObject.cs @@ -1,4 +1,5 @@ -using System; +using ProjectBulldozer.Exceptions; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -51,14 +52,19 @@ public class MassiveGenericObject : ICollectoinGenericObjects public T? Get(int position) { //Проверка позиции - if ((position >= 0) && (position < Count)) + // Выброс ошибки, если выход за границы массива + if (position < 0 || position >= _collection.Length) { - return _collection[position]; - } - else - { - return null; + throw new PositionOutOfCollectionException(position); } + + // Выброс ошибки, если объект пустой + if (position >= _collection.Length && _collection[position] == null) + { + throw new ObjectNotFoundException(position); + } + + return _collection[position]; } public int Insert(T obj) @@ -73,7 +79,8 @@ public class MassiveGenericObject : ICollectoinGenericObjects } } - return -1; + // Выброс ошибки, если переполнение + throw new CollectionOverflowException(Count); } public int Insert(T obj, int position) @@ -84,51 +91,60 @@ public class MassiveGenericObject : ICollectoinGenericObjects return -1; } - //Проверка, что элемент массива по этой позиции пустой, если нет, то ищется свободное место после этой - //позиции и идёт вставка туда, если нет после, ищем до - if (_collection[position] != null) + // Выброс ошибки, если переполнение + if (position < 0 || position >= _collection.Length) { - bool placed = false; - for (int i = position + 1; i < Count; i++) - { - if (_collection[i] == null) - { - position = i; - placed = true; - break; - } - } - - if (placed == false) - { - for (int i = position - 1; i >= 0; i--) - { - if (_collection[i] == null) - { - position = i; - placed = true; - break; - } - } - } - - if (placed == false) - { - return -1; - } + throw new PositionOutOfCollectionException(position); } - //Вставка - _collection[position] = obj; - return position; + + //Проверка, что элемент массива по этой позиции пустой, если нет, то ищется свободное место после этой + //позиции и идёт вставка туда, если нет после, ищем до + if (_collection[position] == null) + { + //Вставка + _collection[position] = obj; + return position; + } + int temp = position + 1; + while (temp < Count) + { + if (_collection[temp] == null) + { + _collection[temp] = obj; + return temp; + } + ++temp; + } + + temp = position - 1; + while (temp >= 0) + { + if (_collection[temp] == null) + { + _collection[temp] = obj; + return temp; + } + --temp; + } + + // Выброс ошибки, если выход за границы массива + throw new CollectionOverflowException(Count); } public T? Remove(int position) { //Проверка позиции - if ((position < 0) || (position >= Count) || (_collection[position] == null)) + // Выброс ошибки, если выход за границы массива + if ((position < 0) || (position >= Count)) { - return null; + throw new PositionOutOfCollectionException(position); + } + + // Выброс ошибки, если объект пустой + if (_collection[position] == null) + { + throw new ObjectNotFoundException(position); } //Удаление объекта из массива, присвоив элементу массива значение null diff --git a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/StorageCollection.cs b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/StorageCollection.cs index 8e934f3..e21ad1a 100644 --- a/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/StorageCollection.cs +++ b/ProjectBulldozer/ProjectBulldozer/CollectionGenericObjects/StorageCollection.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using ProjectBulldozer.Drawnings; +using ProjectBulldozer.Exceptions; namespace ProjectBulldozer.CollectionGenericObjects; @@ -105,12 +106,11 @@ public class StorageCollection /// Сохранение информации по бульдозерам в хранилище в файла /// /// Путь и имя файла - /// true - сохранение прошло успешно, false - ошибка при сохранении данных - public bool SaveData(string filename) + public void SaveData(string filename) { if (_storages.Count == 0) { - return false; + throw new Exception("В хранилище отсутсвует коллекция для сохранения!"); } if (File.Exists(filename)) @@ -153,17 +153,18 @@ public class StorageCollection using FileStream fileStream = new(filename, FileMode.Create); byte[] info = new UTF8Encoding(true).GetBytes(stringBuilder.ToString()); fileStream.Write(info, 0, info.Length); - return true; } /// /// Загрузка информации по бульдозерам в хранилище из файла /// /// Путь и имя файла - /// true- загрузка прошла успешно, false - ошибка при загрузке данных - public bool LoadData(string filename) + public void LoadData(string filename) { - if (!File.Exists(filename)) return false; + if (!File.Exists(filename)) + { + throw new Exception("Файл не существует!"); + } string bufferTextfromFile = ""; using (FileStream fileStream = new(filename, FileMode.Open)) @@ -180,13 +181,12 @@ public class StorageCollection StringSplitOptions.RemoveEmptyEntries); if (strs == null || strs.Length == 0) { - return false; + throw new Exception("В файле нет данных!"); } if (!strs[0].Equals(_collectionKey)) { - // если нет такой записи, то это не те данные. - return false; + throw new Exception("В файле неверные данные!"); } _storages.Clear(); @@ -200,12 +200,8 @@ public class StorageCollection } CollectionType collectionType = (CollectionType)Enum.Parse(typeof(CollectionType), record[1]); - ICollectoinGenericObjects? collectoin = StorageCollection.CreateCollection(collectionType); - - if (collectoin == null) - { - return false; - } + ICollectoinGenericObjects? collectoin = StorageCollection.CreateCollection(collectionType) ?? + throw new Exception("Не удалось определить тип коллекции: " + record[1]); collectoin.MaxCount = Convert.ToInt32(record[2]); @@ -215,15 +211,21 @@ public class StorageCollection { if (elem?.CreateDrawningDozer() is T dozer) { - if (collectoin.Insert(dozer) == -1) + try { - return false; + if (collectoin.Insert(dozer) == -1) + { + throw new Exception("Объект не удалось добавить в коллекцию: " + record[3]); + } + } + catch (CollectionOverflowException exception) + { + throw new Exception("Коллекция переполнена!", exception); } } } _storages.Add(record[0], collectoin); } - return true; } diff --git a/ProjectBulldozer/ProjectBulldozer/Exceptions/CollectionOverflowException.cs b/ProjectBulldozer/ProjectBulldozer/Exceptions/CollectionOverflowException.cs new file mode 100644 index 0000000..0636906 --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/Exceptions/CollectionOverflowException.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectBulldozer.Exceptions; + +/// +/// Класс, описывающий ошибку переполнения коллекции. +/// + [Serializable] +public class CollectionOverflowException : ApplicationException +{ + public CollectionOverflowException(int count) : base("В коллекции превышено допустимое коллическтво: " + count) { } + + public CollectionOverflowException() : base() { } + + public CollectionOverflowException(string message) : base(message) { } + + public CollectionOverflowException(string message, Exception exception) : base(message, exception) { } + + protected CollectionOverflowException(SerializationInfo info, StreamingContext context) : base(info, context) { } +} diff --git a/ProjectBulldozer/ProjectBulldozer/Exceptions/ObjectNotFoundException.cs b/ProjectBulldozer/ProjectBulldozer/Exceptions/ObjectNotFoundException.cs new file mode 100644 index 0000000..660fe39 --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/Exceptions/ObjectNotFoundException.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectBulldozer.Exceptions; + +/// +/// Класс, описывающий ошибку, что по указанной позиции нет элемента +/// +[Serializable] +internal class ObjectNotFoundException : ApplicationException +{ + public ObjectNotFoundException(int i) : base("Не найден объект по позиции: " + i) { } + + public ObjectNotFoundException() : base() { } + + public ObjectNotFoundException(string message) : base(message) { } + + public ObjectNotFoundException(string message, Exception exception) : base(message, exception) { } + + protected ObjectNotFoundException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} + diff --git a/ProjectBulldozer/ProjectBulldozer/Exceptions/PositionOutOfCollectionException.cs b/ProjectBulldozer/ProjectBulldozer/Exceptions/PositionOutOfCollectionException.cs new file mode 100644 index 0000000..e0c439a --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/Exceptions/PositionOutOfCollectionException.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectBulldozer.Exceptions; + +/// +/// Класс, описывающий ошибку выхода за границы коллекции +/// +[Serializable] +internal class PositionOutOfCollectionException : ApplicationException +{ + public PositionOutOfCollectionException(int i) : base("Выход за границы коллекции.Позиция: " + i) { } + + public PositionOutOfCollectionException() : base() { } + + public PositionOutOfCollectionException(string message) : base(message) { } + + public PositionOutOfCollectionException(string message, Exception exception) : base(message, exception) { } + + protected PositionOutOfCollectionException(SerializationInfo info, StreamingContext contex) : base(info, contex) { } +} + diff --git a/ProjectBulldozer/ProjectBulldozer/FormBulldozerCollection.cs b/ProjectBulldozer/ProjectBulldozer/FormBulldozerCollection.cs index 8fbbb24..411d323 100644 --- a/ProjectBulldozer/ProjectBulldozer/FormBulldozerCollection.cs +++ b/ProjectBulldozer/ProjectBulldozer/FormBulldozerCollection.cs @@ -1,5 +1,7 @@ -using ProjectBulldozer.CollectionGenericObjects; +using Microsoft.Extensions.Logging; +using ProjectBulldozer.CollectionGenericObjects; using ProjectBulldozer.Drawnings; +using ProjectBulldozer.Exceptions; using System; using System.Collections.Generic; using System.ComponentModel; @@ -10,8 +12,6 @@ using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using ProjectBulldozer.CollectionGenericObjects; -using ProjectBulldozer.Drawnings; namespace ProjectBulldozer; @@ -30,13 +30,16 @@ public partial class FormBulldozerCollection : Form /// private AbstractCompany? _company = null; + private readonly ILogger _logger; + /// /// Конструктор /// - public FormBulldozerCollection() + public FormBulldozerCollection(ILogger logger) { InitializeComponent(); _storageCollection = new(); + _logger = logger; } /// @@ -49,22 +52,6 @@ public partial class FormBulldozerCollection : Form panelCompanyTools.Enabled = false; } - /* - /// - /// Добавление обычного бульдозера - /// - /// - /// - private void ButtonAddDozer_Click(object sender, EventArgs e) => - CreateObject(nameof(DrawningDozer)); - - /// - /// Добавление крутого бульдозера - /// - /// - /// - private void ButtonAddBulldozer_Click(object sender, EventArgs e) => - CreateObject(nameof(DrawningBulldozer));*/ /// /// Добавление бульдозера @@ -85,19 +72,25 @@ public partial class FormBulldozerCollection : Form /// private void SetDozer(DrawningDozer? dozer) { - if (_company == null || dozer == null) + try { - return; - } + if (_company == null || dozer == null) + { + return; + } - if (_company + dozer != -1) - { - MessageBox.Show("Объект добавлен."); - pictureBox.Image = _company.Show(); + if (_company + dozer != -1) + { + MessageBox.Show("Объект добавлен."); + pictureBox.Image = _company.Show(); + _logger.LogInformation("Объект добавлен: " + dozer.GetDataForSave()); + } } - else + catch (CollectionOverflowException exception) { - MessageBox.Show("Не удалось добавить объект!"); + MessageBox.Show(exception.Message); + _logger.LogError("Ошибка: превышено допустимое коллическтво! {Message}", exception); + } } @@ -182,6 +175,7 @@ public partial class FormBulldozerCollection : Form { if (string.IsNullOrEmpty(maskedTextBox.Text) || _company == null) { + _logger.LogWarning("Удаление объекта из несуществующей коллекции!"); return; } @@ -191,14 +185,25 @@ public partial class FormBulldozerCollection : Form } int pos = Convert.ToInt32(maskedTextBox.Text); - if (_company - pos != null) + + try { - MessageBox.Show("Объект удалён."); - pictureBox.Image = _company.Show(); + if (_company - pos != null) + { + MessageBox.Show("Объект удалён."); + pictureBox.Image = _company.Show(); + _logger.LogInformation("Объект удалён: " + pos); + } } - else + catch (ObjectNotFoundException exception) { - MessageBox.Show("Не удалось удалить объект..."); + MessageBox.Show(exception.Message); + _logger.LogWarning("Попытка удалить не найденный объект по позиции: " + pos); + } + catch (PositionOutOfCollectionException) + { + MessageBox.Show("Объект вне коллекции!"); + _logger.LogWarning("Попытка удалить объект вне коллекции: " + pos); } } @@ -216,26 +221,34 @@ public partial class FormBulldozerCollection : Form DrawningDozer? dozer = null; int counter = 100; - while (dozer == null) + + try { - dozer = _company.GetRandomObject(); - counter--; - if (counter <= 0) + while (dozer == null) { - break; + dozer = _company.GetRandomObject(); + counter--; + if (counter <= 0) + { + break; + } } - } - if (dozer == null) - { - return; - } + if (dozer == null) + { + return; + } - FormBulldozer form = new() + FormBulldozer form = new() + { + SetCar = dozer + }; + form.ShowDialog(); + } + catch (Exception exception) { - SetCar = dozer - }; - form.ShowDialog(); + MessageBox.Show(exception.Message, "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } /// @@ -250,7 +263,12 @@ public partial class FormBulldozerCollection : Form return; } - pictureBox.Image = _company.Show(); + try + { + pictureBox.Image = _company.Show(); + } + catch (PositionOutOfCollectionException) { } + catch (Exception) { } } /// @@ -266,18 +284,26 @@ public partial class FormBulldozerCollection : Form return; } - CollectionType collectionType = CollectionType.None; - if (radioButtonMassive.Checked) + try { - collectionType = CollectionType.Massive; + CollectionType collectionType = CollectionType.None; + if (radioButtonMassive.Checked) + { + collectionType = CollectionType.Massive; + } + else if (radioButtonList.Checked) + { + collectionType = CollectionType.List; + } + _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); + RefreshListBoxItems(); + _logger.LogInformation("Коллекция добавлена " + textBoxCollectionName.Text); } - else if (radioButtonList.Checked) + catch (Exception ex) { - collectionType = CollectionType.List; + _logger.LogError("Ошибка: {Message}", ex.Message); } - _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); - RefreshListBoxItems(); } @@ -295,21 +321,23 @@ public partial class FormBulldozerCollection : Form MessageBox.Show("Коллекция не выбрана!"); return; } - else + try { // Спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись if (MessageBox.Show("Удалить коллекцию?", "Удаление...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { - MessageBox.Show("Коллекция не выбрана!"); return; } - else - { - // Удалить и обновить ListBox - _storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString()); - RefreshListBoxItems(); - } + // Удалить и обновить ListBox + //_storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString()); + _logger.LogInformation("Коллекция удалена: " + listBoxCollection.SelectedItem.ToString()); + RefreshListBoxItems(); } + catch (Exception ex) + { + _logger.LogError("Ошибка: {Message}", ex.Message); + } + @@ -351,12 +379,16 @@ public partial class FormBulldozerCollection : Form return; } - switch (comboBoxSelectorCompany.Text) + try { - case "Хранилище": - _company = new Garage(pictureBox.Width, pictureBox.Height, collection); - break; + switch (comboBoxSelectorCompany.Text) + { + case "Хранилище": + _company = new Garage(pictureBox.Width, pictureBox.Height, collection); + break; + } } + catch (ObjectNotFoundException) { } panelCompanyTools.Enabled = true; RefreshListBoxItems(); @@ -371,15 +403,18 @@ public partial class FormBulldozerCollection : Form { if (saveFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.SaveData(saveFileDialog.FileName)) + try { + _storageCollection.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно.", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation("Сохранение в файл: {filename}", saveFileDialog.FileName); } - else + catch (Exception exception) { MessageBox.Show("Не сохранено!", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogError("Ошибка: {Message}", exception.Message); } } } @@ -394,17 +429,25 @@ public partial class FormBulldozerCollection : Form // Логика if (openFileDialog.ShowDialog() == DialogResult.OK) { - if (_storageCollection.LoadData(openFileDialog.FileName)) + try { + _storageCollection.LoadData(openFileDialog.FileName); MessageBox.Show("Загрузка прошла успешно.", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + foreach (var collection in _storageCollection.Keys) + { + listBoxCollection.Items.Add(collection); + } + _logger.LogInformation("Загрузка из файла: {filename}", saveFileDialog.FileName); RefreshListBoxItems(); } - else + catch (Exception exception) { MessageBox.Show("Загрузка не удалась!", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); + _logger.LogError("Ошибка: {Message}", exception.Message); } } + RefreshListBoxItems(); } } diff --git a/ProjectBulldozer/ProjectBulldozer/Program.cs b/ProjectBulldozer/ProjectBulldozer/Program.cs index 5cad856..58a54bd 100644 --- a/ProjectBulldozer/ProjectBulldozer/Program.cs +++ b/ProjectBulldozer/ProjectBulldozer/Program.cs @@ -1,3 +1,8 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NLog.Extensions.Logging; +using System; + namespace ProjectBulldozer { internal static class Program @@ -10,8 +15,27 @@ namespace ProjectBulldozer { // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); - Application.Run(new FormBulldozerCollection()); + + ServiceCollection services = new(); + ConfigureServices(services); + using ServiceProvider serviceProvider = services.BuildServiceProvider(); + Application.Run(serviceProvider.GetRequiredService()); + } + + /// + /// DI + /// + /// + private static void ConfigureServices(ServiceCollection services) + { + services.AddSingleton() + .AddLogging(option => + { + option.SetMinimumLevel(LogLevel.Information); + option.AddNLog("nlog.config"); + }); } } } \ No newline at end of file diff --git a/ProjectBulldozer/ProjectBulldozer/ProjectBulldozer.csproj b/ProjectBulldozer/ProjectBulldozer/ProjectBulldozer.csproj index 13ee123..0610ed4 100644 --- a/ProjectBulldozer/ProjectBulldozer/ProjectBulldozer.csproj +++ b/ProjectBulldozer/ProjectBulldozer/ProjectBulldozer.csproj @@ -8,6 +8,12 @@ enable + + + + + + True @@ -23,4 +29,11 @@ + + + Always + + + + \ No newline at end of file diff --git a/ProjectBulldozer/ProjectBulldozer/nlog.config b/ProjectBulldozer/ProjectBulldozer/nlog.config new file mode 100644 index 0000000..97fcee1 --- /dev/null +++ b/ProjectBulldozer/ProjectBulldozer/nlog.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + \ No newline at end of file -- 2.25.1