Работа с обобщённым классами и интерфейсами - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Народ, у кого есть время, помогите, мне кажется я запутался в элементарных вещах. Вообщем задача такова. (Описание задачи в кратце) Есть три файла разных форматов, количество форматов может увеличится, xml, xls, dbf. Информацию из файлов необходимо вывести в dataGrid на экран. Пока я сделал вот что: 1) Создал интерфейсы для классов моделей (Под классами моделей я подразумеваю классы объекты которых будут принимать в себя данные из файлов. Надеюсь я правильно их называю «Классы модели»? ) 2) Создал интерфейс метод которого будет читать файл, какого нибудь формата. 3) Создал классы реализующие интерфейсы моделей 4) А вот тут напал тупняк..., а именно: 1. Не могу для себя решить правильно ли я сделал обобщённый интерфейс и обобщенно ограниченный класс? (Правильно говорить обобщенно ограниченный класс?) Может стоило наложить ограничение на сам интерфейс, а не на класс реализующий этот интерфейс? 2. public class ReadingFilesXML<T> : IReadingFiles<T> where T : IFIO, IregNum - Правильно я описал ограничение на интерфейс для класса. Чтобы класс мог использовать только те аргументы которые реализуют один из трёх интерфейсов IdeadMan, Iemployees, Ihuman? Пока всё =) P.S. Побольше критики кода.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
//Создаём интерфейсы для моделей по SOLID (Принцип разделения интерфейсов)
//http://metanit.com/sharp/patterns/5.4.php
 
namespace DownloadAndShow.Interfaces.Models
{
    //Интерфейс не реализуется 
    public interface IFIO
    {
        string Ifio { get; set; }
        string Ffio { get; set; }
        string Ofio { get; set; }
    }
 
    //Интерфейс не реализуется 
    public interface IRegNum
    {
        string RegNum { get; set; }
    }
 
    //Реализация:
    // - DownloadAndShow.Models.Peopol
    public interface IDeadMan : IFIO
    {
        string DateBirth { get; set; }
        string DateDead { get; set; }
    }
 
    //Реализация:
    // - DownloadAndShow.Models.Employees
    public interface IEmployees : IRegNum
    {
        int NumberEmployees { get; set; }
        int NumberNotWorking { get; set; }
        int ChargedOPS { get; set; }
        double SummaOPS { get; set; }
    }
 
    //Реализация:
    // - DownloadAndShow.Models.Human
    public interface IHuman : IFIO, IRegNum
    {
        string SNILS { get; set; }
    }
}
using DownloadAndShow.Interfaces.Models;
 
namespace DownloadAndShow.Models
{
    //Модель для информации о мёртвом человеке из файла XML 
    class DeadMan : IDeadMan
    {
        public string Ifio { get; set; }
        public string Ffio { get; set; }
        public string Ofio { get; set; }
        public string DateBirth { get; set; }
        public string DateDead { get; set; }
 
        public DeadMan(string ifio, string ffio, string ofio, string datedirth, string datedead)
        {
            Ifio = ifio; Ffio = ffio; Ofio = ofio; DateBirth = datedirth; DateDead = datedead;
        }
 
    }
 
    //Модель для информации о сотрудниках в фирме из файла XLS 
    class Employees : IEmployees
    {
        public string RegNum { get; set; }
        public int NumberEmployees { get; set; }
        public int NumberNotWorking { get; set; }
        public int ChargedOPS { get; set; }
        public double SummaOPS { get; set; }
    }
 
    //Модель для информации о человеке из файла dbf 
    class Human : IHuman
    {
        public string Ifio { get; set; }
        public string Ffio { get; set; }
        public string Ofio { get; set; }
        public string RegNum { get; set; }
        public string SNILS { get; set; }
    }
}
using System.Collections.Generic;
 
namespace DownloadAndShow.Interfaces.ReadFiles
{
    //Интерфейс с методом для чтения файлов
    //Реализуется классами:
    // - ReadingFilesXML
    public interface IReadingFiles<T>
    {
        IList<T> ReadFile(string path, IList<T> FillableCollection);
    }
}
using DownloadAndShow.Interfaces.Models;
using DownloadAndShow.Interfaces.ReadFiles;
using System.Collections.Generic;
 
namespace DownloadAndShow.Classes.ReadingFiles
{
    class ReadingFilesXML<T> : IReadingFiles<T> where T : IFIO, IRegNum
    {
        public IList<T> ReadFile(string path, IList<T> FillableCollection)
        {
            return FillableCollection;
        }
    }
 
}

Решение задачи: «Работа с обобщённым классами и интерфейсами»

textual
Листинг программы
    class DeadManReaderXML : IReadingFiles<DeadMan>
    {
        public void ReadFile(string path, IList<DeadMan> FillableCollection)
        {
            //...
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы