我有一个给出List的DataGrid,它可以是Foo,Bar或Baz类型。稍后,我需要提取该数据以保存它,为此我需要知道List中设置为ItemsSource的对象的类型。我尝试使用var car = database.find(carId);
car.then(function (data) {
console.log(data);
});
,没有工作,尝试public void DownloadExcelFile()
{
//code
string fileName = @"D:\NewFolder\Test.xlsx";
oWB.SaveAs(fileName, XlFileFormat.xlOpenXMLWorkbook, missing, missing, missing, missing, XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing, missing);
oWB.Close(missing, missing, missing);
oXL.UserControl = true;
oXL.Quit();
}
例如产生以下警告:
GetType
我无法找到关于此错误的任何内容。也搜索过,无法找到任何东西。有没有办法做我想做的事情?或者甚至比直接获取类型更好的方法呢?
修改
忽略所有锅炉板代码(使用等..)
假设我们已经创建了一个DataGrid,以便稍后将其添加到窗口
if(GridType is List<Foo>)
答案 0 :(得分:1)
您是否尝试过使用typeof:
if(GridType == typeof(List<Foo>))
答案 1 :(得分:1)
您混合了两件事 - is
来检查对象是否属于给定类型,GetType()
返回Type
引用。 DataGridType
的类型为Type
,Type
对象永远不是List<Foo>
的实例。 (想象一下将DataGridType
投射到List<Foo>
- 这意味着什么?)
你想要:
if (DataGridType == typeof(List<Foo>))
...将检查该类型是否完全 List<Foo>
或:
if (DataGridType.ItemsSource is List<Foo>)
...将检查该类型是否可分配给 List<Foo>
。
或者,如果你要在if
身体中投射:
List<Foo> listFoo = DataGridType.ItemsSource as List<Foo>;
if (listFoo != null)
{
// Use listFoo
}