Tag: 扩展方法

为什么types化的.NET数组不是generics? (即SomeType != Array {SomeType})

[背景:]为了使对Excel的interop API编程更容易,我为常见的任务创build了很多扩展方法。 其中许多是Excel的集合对象,如工作簿,表格等的LINQ风格的方法。所有的扩展方法在一个程序集中,我在任何应用程序或插件中引用该程序集需要的方法。 扩展方法程序集和目标应用程序都embedded了来自同一主互操作程序集的互操作types。 所有东西都是用.NET 4.0编写的,引用了PIA版本15。 我只是为ListObjects接口创build了一些扩展方法,它们给我编译器错误,“组件Y.dll中的成员X不能跨越程序集边界使用,因为它包含一个具有通用types参数的types,该参数是embedded式互操作types“。 这是导致错误的方法: public static IEnumerable<ListObject> Where(this ListObjects me,Func<ListObject, Boolean> condition) { var list = new List<ListObject>(); foreach (ListObject x in me) if (condition(x)) list.Add(x); return list; } 这是一个类似的方法, public static IEnumerable<Workbook> Where(this Workbooks me, Func<Workbook, Boolean> condition) { var list = new List<Workbook>(); foreach (Workbook x in me) if […]