为什么在这种情况下兼容的引用类型之间的转换会编译(Excel 2010,.Net 4.5)
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application excelApplication = null;
excelApplication = new Excel.Application();
Excel.Worksheet worksheet = workbook.Worksheets[1] as Excel.Worksheet;
在下面的情况下它不会,尽管我看到了这样的例子:
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Worksheets[1];
在这种情况下,我收到以下编译错误:
> CSC : error CS0518: Predefined type 'Microsoft.CSharp.RuntimeBinder.Binder' is not
defined or imported
> error CS1969: One or more types required to compile a dynamic expression cannot be
found. Are you missing a reference?
最好的,
编辑:感谢下面的两位回答者,以下解释听起来很合理:
如果不将 Microsoft.CSharp 包含在 .Net 版本 >= 4.0 的项目的项目参考中,则无法支持动态语言运行时 (DLR) 和 C# 之间的互操作,即不可能进行动态转换。