2011-10-11 63 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」。