Работа с обобщённым классами и интерфейсами - 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) { //... } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д