我有一个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;
}
答案 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;
}
}