2013-03-04 44 views
0

我正在使用CodeDOM編譯基於數據表檢索表單SQL Server的* .cs文件。所以,編譯後的代碼應該是特定表的實體類。我設法將該類作爲公共,內部或接口類來編譯。如何使用CodeDOM創建私人課程?

Ex。

public class SomeThing(){} 

internal class Something(){} 

但問題是沒有屬性,使課堂私人使用的CodeDOM。有什麼方法可以完成工作嗎?

我用這個代碼作爲我的模板http://msdn.microsoft.com/en-us/library/ms404245(v=vs.100).aspx

+0

如果使用'TypeAttributes.NestedPrivate',會發生什麼?請注意,私有類*必須是嵌套類。 – 2013-03-04 08:41:14

+0

除非你想像Jon提到的那樣創建一個嵌套類,你期望能看到這個'private'類嗎?它與「內部」有什麼不同? – 2013-03-04 08:44:37

+0

TypeAttributes.NestedPrivate完成了這項工作。謝謝。 – Irshad 2013-03-04 08:48:25

回答

1

頂級私人課程沒有什麼意義,因爲它們對其他類型不可見。嵌套類可以是私有的。

下面是從C#語言規範的摘錄:

3.5.2輔助域

頂層未綁定類型T(4.4.3節)的可訪問域的是 是在宣佈程序P的定義如下:

  • 如果T的聲明可訪問性是公共的,T的訪問域是P的程序文本和引用
  • 任何程序
  • P.如果T的聲明可訪問是內部的,T的訪問域是P.

的程序文本從它遵循一個 頂層未綁定類型的可訪問域是這些定義總是至少包含 程序的程序文本,其中該類型被聲明爲。 構造類型T的可訪問性域是未綁定泛型類型T的可訪問域和類型自變量A1,...,AN的可訪問域的交集。

嵌套件M在程序P內的類型T 聲明的可訪問域定義如下(注意M本身可以 可能是一種類型的):

  • 如果聲明可訪問的M是公共的,M的可訪問域是T的可訪問域。
  • 如果M的聲明可訪問性是受保護的內部函數,則設D是P的程序文本和任何類型的程序文本的聯合。 T,它在P之外聲明。M的可訪問性域 是t他與T的可訪問性域D的交集。
  • 如果M的聲明的可訪問性受到保護,則設D爲T的程序文本和來自 T的任何類型的程序文本的並集。 M是T的可訪問域與D的交集。
  • 如果M的聲明可訪問是內部的,M的訪問域是T的可訪問域的與 P的程序文本的交點
  • 如果M的聲明可訪問是私有的,的可訪問域M是T的程序文本。
+0

這教會了我一點。謝謝。 – Irshad 2013-03-04 10:06:59

0

而且TypeAttributes NotPublic?

+0

這應該是一個評論而不是答案.. – 2013-03-04 08:55:25

+0

這是內部類的屬性。 – Irshad 2013-03-04 09:00:04