PIbd-21_MasenkinMS_Aircraft.../AircraftPlant/AircraftPlantFileImplement/Implements/BackUpInfo.cs
2024-05-13 02:01:32 +04:00

49 lines
1.3 KiB
C#

using AircraftPlantContracts.StoragesContracts;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AircraftPlantFileImplement.Implements
{
/// <summary>
/// Реализация интерфейса получения данных из хранилища
/// </summary>
public class BackUpInfo : IBackUpInfo
{
/// <summary>
/// Получить список объектов
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public List<T>? GetList<T>() where T : class, new()
{
var source = DataFileSingleton.GetInstance();
return (List<T>?)source.GetType()
.GetProperties()
.FirstOrDefault(x => x.PropertyType.IsGenericType && x.PropertyType.GetGenericArguments()[0] == typeof(T))
?.GetValue(source);
}
/// <summary>
/// Получить тип
/// </summary>
/// <param name="modelInterfaceName"></param>
/// <returns></returns>
public Type? GetTypeByModelInterface(string modelInterfaceName)
{
var assembly = typeof(BackUpInfo).Assembly;
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.IsClass && type.GetInterface(modelInterfaceName) != null)
{
return type;
}
}
return null;
}
}
}