我正在尝试构建一个通用的方法,将任何IEnumerable转换为object[,]。这样做的目的是通过ExcelDNA插入到Excel中,最好使用2d object数组。
我对反射不熟悉,需要一些严肃的帮助来填补这方面的空白。下面发布的代码是我目前拥有的内容,我需要获得外部循环中DataSource中索引i处T的属性。在内部循环中,然后依次获取每个属性的值并插入object[,]。
任何帮助都将受到赞赏。 谢谢 理查德
我对反射不熟悉,需要一些严肃的帮助来填补这方面的空白。下面发布的代码是我目前拥有的内容,我需要获得外部循环中DataSource中索引i处T的属性。在内部循环中,然后依次获取每个属性的值并插入object[,]。
任何帮助都将受到赞赏。 谢谢 理查德
public object[,] ConvertListToObject<T>(IEnumerable<T> DataSource)
{
int rows = DataSource.Count();
//Get array of properties of the type T
PropertyInfo[] propertyInfos;
propertyInfos = typeof(T).GetProperties(BindingFlags.Public);
int cols = propertyInfos.Count(); //Cols for array is the number of public properties
//Create object array with rows/cols
object[,] excelarray = new object[rows, cols];
for (int i = 0; i < rows; i++) //Outer loop
{
for(int j = 0; j < cols; j++) //Inner loop
{
object[i,j] = //Need to insert each property val into j index
}
}
return excelarray;
}
}
GetValue
的文档说明对于非索引属性,第二个参数应该为 null。这将减轻垃圾收集器的负担。 - phoog