using SecuritySystemContracts.StoragesContracts; namespace SecuritySystemFileImplement.Implements { public class BackUpInfoStorage : IBackUpInfoStorage { private readonly DataFileSingleton source; public BackUpInfoStorage() { source = DataFileSingleton.GetInstance(); } public List<T>? GetList<T>() where T : class, new() { return (List<T>?)source .GetType() .GetProperties() .FirstOrDefault( x => x.PropertyType.IsGenericType && x.PropertyType.GetGenericArguments()[0] == typeof(T))? .GetValue(source); } public Type? GetTypeByModelInterface(string modelInterfaceName) { var assembly = typeof(BackUpInfoStorage).Assembly; var types = assembly.GetTypes(); foreach (var type in types) { if (type.IsClass && type.GetInterface(modelInterfaceName) != null) { return type; } } return null; } } }