Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
FuryLion Courses. Unity
FuryLion Courses. Unity
  • Project overview
    • Project overview
    • Details
    • Activity
  • Analytics
    • Value Stream Analytics
  • Wiki
    • Wiki
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Public Documentation
  • FuryLion Courses. UnityFuryLion Courses. Unity
  • Wiki
  • Универсальные классы и методы, расширения классов

Универсальные классы и методы, расширения классов

Last edited by Alexander Nosick Oct 22, 2020
Page history
This is an old version of this page. You can view the most recent version or browse the history.

В данном задании требуется обучится работать с универсальными классами и универсальными методами. Также затронем расширения для классов и бинарную сериализацию/десериализацию.

Расширить функционал прошлого задания, в котором требуется:

  1. Разработать универсальные методы для сохранения и загрузки T в файл по определенному пути:
/// <summary>
/// Хранилище данных.
/// </summary>
public static class Storage
{
    /// <summary>
    /// Сохранение объекта в файл.
    /// </summary>
    /// <param name="data">Объект</param>
    /// <param name="filePath">Путь к файлу</param>
    /// <typeparam name="T">Тип объекта</typeparam>
    public static void Save<T>(T data, string filePath)
    {
        var bytes = data.GetBytes();

        // Сохраняем на диск по определенному пути...
        // Обработка исключений...
        // ...
    }

    /// <summary>
    /// Загрузка объекта из файла.
    /// </summary>
    /// <param name="filePath">Путь к файлу</param>
    /// <typeparam name="T">Тип объекта</typeparam>
    /// <returns>Объект</returns>
    public static T Load<T>(string filePath)
    {
        // Чтение файла по определенному пути...
        // Десериализация данных...
        // Обработка исключений...
        // ...

        // return ...
    }
}
  1. Разработать универсальный класс, реализующий интерфейс IDictionary<T>, который будет вызывать события при добавлении и удалении элементов из списка.
/// <summary>
/// Класс вызывающий события при добавлении и удалении объектов из коллекции.
/// </summary>
public class ObservableDictionary<T> : IDictionary<T>
{
    // ...
}
  1. Разработать расширение для типа object.
/// <summary>
/// Расширения для object.
/// </summary>
public static class ObjectExtensions
{
    /// <summary>
    /// Получение байтового представления объекта.
    /// </summary>
    /// <returns>Байтовое представление объекта</returns>
    public static byte[] GetBytes(this object data) 
    {
        // Сериализация object в массив байт...
        // return массив байт
    }
}
  1. Объединить все наработки в предыдущих 3-х подзаданиях.
    В результате должно получится приложение, которое позволяет получить погоду.
    ObservableDictionary выступает в роли кэша, который хранит погоду ранее запрашиваемых городов. При добавлении нового города в ObservableDictionary должно вызватся событие, на которое подписан некоторый метод, который будет сохранять данные с помощью класса Storage, а сериализовать данные для преобразование объектов массив байт с помощью расширения ObjectExtensions.

При последующих загрузках приложения требуется загружать кэш с предыдущих сессиях приложения.

  1. Для всех классов и публичных методов/полей/свойств требуется добавить документирующие XML комментарии.
Clone repository
  • FuryLion UI System
  • Home
  • Project 3
  • SkyRoads
  • Unity Canvas Масштабируемый интерфейс
  • csharp interview task
  • match 3 with draw mechanic
  • project 4
  • zenject
  • Введение в язык программирования C#
  • Вращение камеры
  • Изучение основ скриптинга Unity
  • Подготовка к выполнению
  • Построение дома
  • Прогноз погоды
More Pages