0

CodeDOM を使用して、SQL サーバーから取得したデータ テーブルに基づいて *.cs ファイルをコンパイルしています。したがって、コンパイルされたコードは、特定のテーブルのエンティティ クラスである必要があります。クラスをパブリック、内部、またはインターフェイス クラスとしてコンパイルすることができました。

元。

public class SomeThing(){} 

また

internal class Something(){}

しかし問題は、CodeDOM を使用してクラスをプライベートにするための属性がないことです。仕事を終わらせる方法はありますか?

このコードをテンプレートhttp://msdn.microsoft.com/en-us/library/ms404245(v=vs.100).aspxとして使用しました

4

2 に答える 2

1

トップレベルのプライベート クラスは、他の型からは見えないため、あまり意味がありません。ネストされたクラスはプライベートにすることができます。

C# 言語仕様からの抜粋を次に示します。

3.5.2 アクセシビリティ ドメイン

プログラム P で宣言されているトップレベルのバインドされていない型 T (§4.4.3) のアクセシビリティ ドメインは、次のように定義されます。

  • T の宣言されたアクセシビリティが public である場合、T のアクセシビリティ ドメインは、P のプログラム テキストと、それを参照するすべてのプログラムです。
  • P. T の宣言されたアクセシビリティが内部である場合、T のアクセシビリティ ドメインは P のプログラム テキストです。

これらの定義から、最上位のバインドされていない型のアクセシビリティ ドメインは常に、少なくともその型が宣言されているプログラムのプログラム テキストであることがわかります。構築された型 T のアクセシビリティ ドメインは、バインドされていないジェネリック型 T のアクセシビリティ ドメインと、型引数 A1、...、AN のアクセシビリティ ドメインの共通部分です。

プログラム P 内の型 T で宣言されたネストされたメンバー M のアクセシビリティ ドメインは、次のように定義されます (M 自体が型である可能性があることに注意してください)。

  • M の宣言されたアクセシビリティがパブリックである場合、M のアクセシビリティ ドメインは T のアクセシビリティ ドメインです。
  • M の宣言されたアクセシビリティが内部で保護されている場合、D を P のプログラム テキストと、P の外部で宣言された T から派生した任意の型のプログラム テキストの和集合とする。M のアクセシビリティ ドメインは、アクセシビリティ ドメインの共通部分であるT と D の
  • M の宣言されたアクセシビリティが保護されている場合、D を T のプログラム テキストと、T から派生した任意の型のプログラム テキストの和集合とする。M のアクセシビリティ ドメインは、T のアクセシビリティ ドメインと D の共通部分である。
  • M の宣言されたアクセシビリティが内部的である場合、M のアクセシビリティ ドメインは、T のアクセシビリティ ドメインと P のプログラム テキストとの共通部分です。
  • M の宣言されたアクセシビリティが非公開の場合、M のアクセシビリティ ドメインは T のプログラム テキストです。
于 2013-03-04T09:05:13.563 に答える
0

そしてTypeAttributesNotPublic?

于 2013-03-04T08:52:11.453 に答える