【发布时间】:2012-10-08 03:05:43
【问题描述】:
我有这个 .NET 4.0 代码:
var myTable = tables[1];
myTable = tables.Item["Table1"];
myTable = tables.OfType<Excel.ListObject>().FirstOrDefault(t => t.Name == "Table1");
我正在尝试使用 .NET 3.5 进行编译并遇到一堆错误:
错误 23 属性、索引器或事件“项目”不受 语言;尝试直接调用访问器方法 'Microsoft.Office.Interop.Excel.ListObjects.get_Item(object)'
和
错误 24 'Microsoft.Office.Interop.Excel.ListObjects' 不包含 'OfType' 的定义和最佳扩展方法重载 'System.Linq.Queryable.OfType(System.Linq.IQueryable)' 有 一些无效的参数
和
错误 25 实例参数:无法从 'Microsoft.Office.Interop.Excel.ListObjects' 到 'System.Linq.IQueryable'
您能否指导我了解这些错误的确切含义,以便我可以尝试将其转换为 .NET 3.5?
非常感谢您的建议。
【问题讨论】:
-
没有简单的解决方法。 ListObjects 接口有点笨拙,它有一个 Item 属性,它不是接口的默认属性。在 MSDN 文章中,默认名称为 _Default。 C# 版本 3 及更早版本仅支持一个索引器。 ListObjects 的错误。正如错误消息所述,您必须明确使用 get_Item()。这打破了 Linq。