2012-05-20 101 views
1

我是新來的c#.Net。在我的解決方案中,兩個名稱空間無法看到對方。一個命名空間在其他命名空間中找不到類

我有項目A,其中有部分類C1和其中的一些方法。 具有不同命名空間的項目B也具有部分類c1,其中一些方法與項目A中的相同名稱以及一些其他方法。

我在項目A中添加了引用項目B的引用,使用了包含在項目A類中的命名空間B.

但仍然在A中,我不能使用B中的類c1中的內容,我只能從A本身看到類c1的方法。我想在兩個項目中使用C1的方法A.

有人可以幫我解決這個問題嗎?我正在使用.Net框架4

+0

所以我通過改變它們的類中的屬性和名稱空間部分來使兩個項目具有相同的名稱空間。他們仍然是兩個不同的項目,只有相同的命名空間。那會有用嗎?我只想在項目A中使用B的一些c1方法,其中c1的方法也在A中定義,但有一些重疊。 – neverland

回答

1

B大概是另一個命名空間中的完整類,但只在特定文件中定義爲部分類。你不能像@tzerb提到的那樣,在兩個不同的命名空間中有兩個相同的分類 - 由於命名空間不同,所以類名稱本身(完全限定)是不同的。

如果你需要的是使用在A級從B類的方法(也許是重寫它們),您可以使用繼承:

class A: B 
{ 
    // override methods from B 
    // or call base.<method> when needed 
} 

容器或安全:

class A 
{ 
    private B _b; 

    // construct and use _b methods directly 
} 

使用繼承如果AB,否則使用包含。

+0

它仍然是不同的項目。對於項目A引用來自項目B的東西,它需要*編譯* B並將其包含在A.一旦你編譯了一個類,你就不能再在'partial'定義中使用它 - 你現在可以包含或繼承它,根據我的答案。 – yamen

+0

謝謝衙門,事情是A和B是兩個項目有很多類和相同的命名空間。 在項目答: 命名空間例1 { 公共部分類C1 { 公共無效getsomething(){返回RESULT1;} } } 在項目B: 命名空間例1 { 公共部分類C1 { 公共無效getsomethingElse(){返回結果2;} } } 我想能夠在項目A中調用getsomething()和getsomethingElse(),但我不能看到getsomethingElse()現在因爲它在一個不同的項目... – neverland

+0

創建對象B:'var b = new B()',然後在'class A'中調用它:'b.getSomethingElse()'。 – yamen

0

部分類必須共享一個名稱空間。稱爲c1的兩​​個部分類是完全不同的類。

相關問題