2011-07-16 73 views
1

我有一個命名空間ABC,它有一個窗體類F和一個普通的類C.現在我有另外一個具有許多不同類的命名空間XYZ。現在,F只能在C程序中使用,而在其他地方無法使用。其他類使用C而不是F.如何不將類暴露給任何其他類而只有一個類? (C#)

在Visual Studio(2010)中,從XYZ命名空間中的類我可以看到F列在intellisense下拉列表中(因爲我引用了ABC來使用C)。我怎樣才能防止呢?我只想在那裏。只要我可以從XYZ使用C,任何方法都可以。

謝謝。

回答

1

是否有任何理由不能將它放在另一個名稱空間中以將其隱藏在其他類中,例如命名空間ABC.Forms?

如果它不是一個表單類(因此是一個部分類,如果您使用的是最新版本的.net) - 我會說,爲什麼不把它作爲C的內部類 - 但我懷疑與表格課整齊。

我會去命名空間的變化。

+0

不,我不想將ABC移動到另一個命名空間。我沒有問題,使窗體類內部類到C,但它可能與表單類? – nawfal

+0

嗯,如果表單類完全是代碼而不是通過Visual Studio設計器製作的,那麼我看不出爲什麼沒有。不過,我想這不是這種情況,在這種情況下,表單被分成兩個部分類,並且你不能只將它嵌入一個嵌入類C中。 – iandotkelly

+0

是的,你的是正確的,它分成兩部分類,但我不介意做一個。我想我可以將所有的初始化部分包含到一個類中。感謝您的幫助 – nawfal

5

你可以讓F成爲C類中的嵌套類嗎?

public class C 
{ 
    public C() 
    { } 

    class F : Form 
    { 
     ... 
    } 
} 

我不確定這是否適用於您的方案,但它可以解決Intellisense問題,同時滿足上面列出的要求。

+0

我可以做到這一點,但它可能爲表單類嗎? – nawfal

+0

@nawfal:是的,它可以爲一個表單。這只是另一個階級。我在iandotkelly關於部分課堂問題的回答中看到您的評論。你總是可以將部分類組合成一個類,使你的生活更輕鬆。這將使Form類看起來更像Visual Studio 2005中生成的那樣,您可以使用區域而不是單獨的文件來隱藏設計器生成的代碼。 –

+0

當然。謝謝你的幫助。現在困惑誰給出了正確的答案,因爲你們都有,也是同一個! :) – nawfal

相關問題