Работа с обобщённым классами и интерфейсами - 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. Побольше критики кода.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. //Создаём интерфейсы для моделей по SOLID (Принцип разделения интерфейсов)
  7. //http://metanit.com/sharp/patterns/5.4.php
  8. namespace DownloadAndShow.Interfaces.Models
  9. {
  10. //Интерфейс не реализуется
  11. public interface IFIO
  12. {
  13. string Ifio { get; set; }
  14. string Ffio { get; set; }
  15. string Ofio { get; set; }
  16. }
  17. //Интерфейс не реализуется
  18. public interface IRegNum
  19. {
  20. string RegNum { get; set; }
  21. }
  22. //Реализация:
  23. // - DownloadAndShow.Models.Peopol
  24. public interface IDeadMan : IFIO
  25. {
  26. string DateBirth { get; set; }
  27. string DateDead { get; set; }
  28. }
  29. //Реализация:
  30. // - DownloadAndShow.Models.Employees
  31. public interface IEmployees : IRegNum
  32. {
  33. int NumberEmployees { get; set; }
  34. int NumberNotWorking { get; set; }
  35. int ChargedOPS { get; set; }
  36. double SummaOPS { get; set; }
  37. }
  38. //Реализация:
  39. // - DownloadAndShow.Models.Human
  40. public interface IHuman : IFIO, IRegNum
  41. {
  42. string SNILS { get; set; }
  43. }
  44. }
Листинг программы
  1. using DownloadAndShow.Interfaces.Models;
  2. namespace DownloadAndShow.Models
  3. {
  4. //Модель для информации о мёртвом человеке из файла XML
  5. class DeadMan : IDeadMan
  6. {
  7. public string Ifio { get; set; }
  8. public string Ffio { get; set; }
  9. public string Ofio { get; set; }
  10. public string DateBirth { get; set; }
  11. public string DateDead { get; set; }
  12. public DeadMan(string ifio, string ffio, string ofio, string datedirth, string datedead)
  13. {
  14. Ifio = ifio; Ffio = ffio; Ofio = ofio; DateBirth = datedirth; DateDead = datedead;
  15. }
  16. }
  17. //Модель для информации о сотрудниках в фирме из файла XLS
  18. class Employees : IEmployees
  19. {
  20. public string RegNum { get; set; }
  21. public int NumberEmployees { get; set; }
  22. public int NumberNotWorking { get; set; }
  23. public int ChargedOPS { get; set; }
  24. public double SummaOPS { get; set; }
  25. }
  26. //Модель для информации о человеке из файла dbf
  27. class Human : IHuman
  28. {
  29. public string Ifio { get; set; }
  30. public string Ffio { get; set; }
  31. public string Ofio { get; set; }
  32. public string RegNum { get; set; }
  33. public string SNILS { get; set; }
  34. }
  35. }
Листинг программы
  1. using System.Collections.Generic;
  2. namespace DownloadAndShow.Interfaces.ReadFiles
  3. {
  4. //Интерфейс с методом для чтения файлов
  5. //Реализуется классами:
  6. // - ReadingFilesXML
  7. public interface IReadingFiles<T>
  8. {
  9. IList<T> ReadFile(string path, IList<T> FillableCollection);
  10. }
  11. }
Листинг программы
  1. using DownloadAndShow.Interfaces.Models;
  2. using DownloadAndShow.Interfaces.ReadFiles;
  3. using System.Collections.Generic;
  4. namespace DownloadAndShow.Classes.ReadingFiles
  5. {
  6. class ReadingFilesXML<T> : IReadingFiles<T> where T : IFIO, IRegNum
  7. {
  8. public IList<T> ReadFile(string path, IList<T> FillableCollection)
  9. {
  10. return FillableCollection;
  11. }
  12. }
  13. }

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

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

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


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

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

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы