2011-10-11 65 views
0

我有两个项目的解决方案。一个命名空间是MarketplaceWebServiceOrders,另一个是MarketsplaceWebServiceOrders.Sample。我在MarketplaceWebServiceOrders有公共接口MarketplaceWebServiceOrders。我的主要功能是在MarketplaceWebServiceOrders.Sample和每当我尝试使用接口MarketplaceWebServiceOrders我得到Error: MarketplaceWebServiceOrders.Samples.MarketplaceWebServiceOrders is namespace used use like a type命名空间和类型问题

我其实已经编译并运行了这个程序,但我需要进行更改并弹出。

+1

请参阅:http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/从底部开始阅读。 –

+0

尽量想出更好的名字。一个接口类型的名称应该总是以字母I开头。 –

+0

@AnthonyPegram我使用第三方库,我真的不能改变。 –

回答

1

在这种情况下,你可以访问你的界面指定命名空间的全名:

MarketplaceWebServiceOrders.MarketplaceWebServiceOrders instance = new ...(); 

总之,您的命名看起来是错误的。您可能会误用命名空间 - 它们应该对类型进行“分类”,不需要将类型名称与命名空间相同。此外,接口以良好惯例为前缀I

+0

如何在方法调用中为参数执行此操作? –

+0

完全一样:'void MyMethod(MarketplaceWebServiceOrders.MarketplaceWebServiceOrders参数)'。有点混乱,不是吗? – NOtherDev

+0

当我尝试询问是否要生成存根,并且我生成的存根是MarketplaMarketplaceWebServiceOrders.Samples.MarketplaceWebServiceOrders命名空间。 –

0

你可能想要考虑重构你的代码,使命名空间和类型不太模糊。名称空间的目的之一是组织代码,所以在名称空间和类型中都有相同的名称是有点冗余的。

0

那么,错误指出您在MarketplaceWebServiceOrders.Sample命名空间中有一个额外的命名空间级别MarketplaceWebServiceOrders。这是真的?如果是这样,您将需要从基本名称空间中完全限定接口的用法:MarketplaceWebServiceOrders.MarketplaceWebServiceOrders是您要的接口。只是不要在这个代码文件中使用基本的MarketplaceWebServiceOrders命名空间。

要尽可能地避免这种混淆,我会改变命名空间名称或接口。界面会更容易;如果它是实际的C#接口类型(在大多数C风格语言中推荐命名约定),请在标识符的前面添加“I”。