如何编写一个通用函数来从excel文件创建Dto列表?

时间:2011-02-03 14:41:02

标签: c# generics

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

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

EX: 如果以下是两种类型的DTO A类{//此处有些属性} 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;
        }

1 个答案:

答案 0 :(得分:0)

如果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;
      }
}