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

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

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

  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<TKey, TValue>, который будет вызывать события при добавлении и удалении элементов.
/// <summary>
/// Класс вызывающий события при добавлении и удалении объектов из коллекции.
/// </summary>
public class ObservableDictionary<TKey, TValue> : IDictionary<TKey, TValue>
{
    // ...
}
  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