如何在C#中使用不同文件夹中的命名空间

3
我有一个使用亚马逊MWS API的C#项目。我的项目需要包含亚马逊提供的每个API的特定命名空间。问题在于,即使跨API,亚马逊也会为API文件使用类似或完全相同的名称。
为了解决命名问题,我在项目中创建了报告、订单、Feeds等文件夹,并在其中包含了API和底层文件夹结构。现在我遇到的问题是如何引用特定的API?
我的文件夹结构如下:
AmazonConnectors
    |____Reports
         |____Attributes
                 |___[files]      
         |____Model
                 |___[files]
         [files]       

我可以参考的文件位于报告文件夹内的MarketplaceWebService.cs。

以下语句有效:

using MarketplaceWebService;

但是如果我现在想引用Feeds API中的代码,该API也包含在AmazonConnectors项目中,并且具有与Reports API相同的文件夹结构和文件名,该怎么办?
使用关键字“Using”和“directories”进行搜索会返回大量无关的材料。
是否有一种简单的解决方案可以将所有文件保留在同一个项目中,还是我需要将每个API分别放入解决方案中的自己独立的项目中?
----编辑----
我尝试将报告和Feeds API添加到同一个项目中,由于命名空间相同,重复的方法(其中有一些)会导致重复定义错误。
Error   49  The namespace 'MarketplaceWebService.Model' already contains a definition for 'Error'   C:\Programming_Projects\ARC\AmazonConnectors\Feeds\Model\Error.cs   28  18  AmazonConnectors

你能给出两个API的具体示例吗? - Jon Senchyna
报告 API 和 Feeds API 均引用 MarketplaceWebService.cs,两者之间完全相同且共享相同的命名空间,然而在每个 API 的 Model 目录中,API 是不同的。因此,MarketplaceWebService.Model 不指向特定的 API。 - Robert H
您无法在将文件添加到项目之前更改文件中的命名空间吗? - Steven Doggart
其中一个模型目录包含82个单独的文件。在8个不同的API中是相同的(文件数量不同,但主题相同)。 - Robert H
1
如果你不能或不想在每个文件中更改命名空间,那么我认为你唯一的选择就是将它们放入不同的项目中。 - Steven Doggart
我也是这么想的,感谢你的关注SteveDog。我会将你的帖子标记为已回答。 - Robert H
2个回答

0

不需要复杂的文件夹结构,所有文件都可以放在同一个目录中(如果想这样做),可以按如下方式命名文件:

AmazonConnectors.File1.cs . . AmazonConnectors.Reports.Attributes.File1.cs AmazonConnectors.Reports.Attributes.File2.cs . .

名称空间也是如此。

您可以使用显式命名或别名,例如:

using MarketPlaceWebService = AmazoneConnector.Model.MarketPlaceWebService; 或者 只使用 AmazoneConnector.Model.MarketPlaceWebService

希望每个文件对应于一个类,而不只是一组为方便打包在一起的方法。


那么处理复杂的目录结构不需要特别的处理吗? - Robert H

0
如果您在两个命名空间之间存在命名冲突,只需在引用另一个命名空间中的类型时使用完整的命名空间即可解决。因此,如果您在命名空间OneTwo中都有类AB,并且命名空间Two中的类B需要访问来自命名空间One的类A,它只需要将其称为One.A而不是A

我并不太担心命名冲突,因为我熟悉使用别名来解决这个问题 - 更多的是希望确保API完全被表示,并且没有因为无法明确指定哪个API而遗漏/跳过任何内容,如果这样说有意义的话。 - Robert H
抱歉,我不明白你的意思...也许如果你提供一个更具体的问题示例,可能会有所帮助。 - Steven Doggart
请查看错误信息生成的编辑以获得进一步的澄清 - 如果需要,我可以提供额外的信息。 - Robert H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接