gpt4 book ai didi

c# - 当我只想在某些时候使用别名时,有没有办法避免多余的 "using"指令?

转载 作者:行者123 更新时间:2023-12-04 16:54:37 26 4
gpt4 key购买 nike

最近,我一直在编写大量适用于 Windows 窗体和 Excel 互操作的代码。我遇到的其中一件事是模棱两可的引用。例如,如果我尝试创建一个新的 Excel 应用程序,它不起作用。

Application app = new Application { Visible = true };

此行返回错误,因为对 Application 的引用不明确。它可以指 Excel 应用程序,但也可以指 Windows 窗体应用程序。

而不是输入这个:
Microsoft.Office.Interop.Excel.Application = new Microsoft.Office.Interop.Excel.Application { Visible = true };

我知道我可以将 using 指令更改为:
using Excel = Microsoft.Office.Interop.Excel;

然后将我的 app 声明更改为:
Excel.App app = new Excel.App { Visible = true};

但是,稍后在我的代码中,我必须声明相当多的工作表和工作簿。不使用“Excel = Microsoft...”命名空间别名,我可以这样做,因为对 Workbook 和 Worksheet 的引用没有歧义:
Workbook someWorkbook = app.Workbooks.Add();
Worksheet someWorksheet = app.ActiveSheet;

但是当我将 using 指令更改为
using Excel = Microsoft.Office.Interop.Excel;

我必须将所有使用 Excel 对象的声明更改为“Excel.someObject”,或者我必须添加第二个 using 指令:

选项 1:
using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Application app = new Application { Visible = true };
Excel.Workbook someWorkbook = app.Workbooks.Add();
Excel.Worksheet someWorkSheet = app.ActiveSheet;

选项 2:
using Excel = Microsoft.OFfice.Interop.Excel;
using Microsoft.Office.Interop.Excel;
...
Excel.Application app = new Application { Visible = true };
Workbook someWorkbook = app.Workbooks.Add();
Worksheet someWorkSheet = app.ActiveSheet;

我更喜欢选项 2,这是我迂腐,但必须编写两个 using 指令来引用同一个库的冗余是令人讨厌的。 是否有第三个选项允许我编写我在选项 2 中看到的声明而不必使用两个 using 指令?也就是说,有没有办法编写我的 using 指令,以便可以在需要的地方使用别名,但在引用没有歧义的地方省略?

最佳答案

如果你在一个不需要引用的文件中System.Windows.Forms.Application (项目中的大多数文件都应该是这样),添加 using Microsoft.Office.Interop.Excel在命名空间级别:

using System.Windows.Forms;

namespace TestForms {

using Microsoft.Office.Interop.Excel;

class TestClass {
Application app = ... // This refers to Microsoft.Office.Interop.Excel.Application
}

}

这样 Microsoft.Office.Interop.Excel.Application会“赢” System.Windows.Forms.Application对于后面的所有类 using宣言。

关于c# - 当我只想在某些时候使用别名时,有没有办法避免多余的 "using"指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38919110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com