【问题标题】:How to write a general function to create a list of Dto from an excel file?如何编写一个通用函数来从 excel 文件创建 Dto 列表?
【发布时间】:2011-02-05 07:52:00
【问题描述】:

我有一个 WPF-mvvm 应用程序。

我需要读取一个 excel 文件..并创建一个 Dto(数据传输对象)列表。

前: 如果以下是两种类型的 DTO Class A{ // 这里有一些属性} Class B{// 这里有一些其他属性}

在运行时,我将传递对 excel 文件的引用...根据我从哪个窗口调用此函数,我需要该特定 DTO 的列表(这意味着 -> List(A) 或 List(B ))。

我可以使用下面的函数(带有泛型)..? 但是我怎么知道运行时每个类的属性是什么?

 private static IList<T> CreateLookupList<T>(string currentFileName)
        {
            List<T> items = new List<T>();

            Workbook internalWorkBook = Workbook.Load(currentFileName);
                //Create data table for each worksheet
                foreach (Worksheet curWorksheet in internalWorkBook.Worksheets)
            {
            }

            return items;
        }

【问题讨论】:

    标签: c# generics


    【解决方案1】:

    您建议的方法仅在 ClassA 和 ClassB 都实现了相同的接口,或者都来自同一个超类的情况下才有效。如果是这样的话,你可以这样做:

    public interface IWorksheetHandler
    {
        void LoadFromWorksheet(Worksheet worksheet);
    }
    
    public class DtoLoader
    {
         public static IList<T> CreateLookupList<T>(string currentFileName) where T:IWorksheetHandler, new()
         {
              List<T> items = new List<T>();
              Workbook internalWorkBook = Workbook.Load(currentFileName);
              foreach (Worksheet worksheet in internalWorkBook.Worksheets)
              {
                  T dto = new T();
                  dto.LoadFromWorksheet(worksheet );
                  items.Add(dto);
              }
              return items;
          }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      相关资源
      最近更新 更多