型名、属性、および定義された型によって拡張される型を指定して、 TypeBuilder を構築します。
Overloads Public Function DefineType( _
ByVal name As String, _ ByVal attr As TypeAttributes, _ ByVal parent As Type _) As TypeBuilder
[C#]
public TypeBuilder DefineType(stringname,TypeAttributesattr,Typeparent);
[C++]
public: TypeBuilder* DefineType(String* name,TypeAttributesattr,Type* parent);
[JScript]
public function DefineType(
name : String,attr : TypeAttributes,parent : Type) : TypeBuilder;
パラメータ
- name
型の完全パス。name に null を埋め込むことはできません。 - attr
型に関連付ける属性。 - parent
定義された型を拡張する型。
戻り値
要求された属性をすべて指定して作成された TypeBuilder を返します。
例外
| 例外の種類 | 条件 |
|---|---|
| ArgumentException | 指定された名前の型が、このモジュールの親アセンブリに存在します。
または 入れ子になった型の属性は、入れ子になっていない型に対して設定されます。 |
| ArgumentNullException | name が null です。 |
解説
型名はアセンブリ内で一意であることが必要です。1 つのアセンブリの 2 つの異なるモジュール内に、同じ名前を持つ 2 つの型を含めることはできません。
使用例
[Visual Basic, C#, C++] 現在の動的モジュールで CreateType を使用して TypeBuilder を生成し、型を作成し、アセンブリを保存する例を次に示します。
Dim asmname As New AssemblyName()
asmname.Name = "assemfilename.exe"
Dim asmbuild As AssemblyBuilder = _
System.Threading.Thread.GetDomain().DefineDynamicAssembly(asmname, _
AssemblyBuilderAccess.RunAndSave)
Dim modbuild As ModuleBuilder = _
asmbuild.DefineDynamicModule("modulename", "assemfilename.exe")
Dim typebuild1 As TypeBuilder = modbuild.DefineType("typename")
typebuild1.CreateType()
asmbuild.Save("assemfilename.exe")
[C#]
AssemblyName asmname = new AssemblyName();
asmname.Name = "assemfilename.exe";
AssemblyBuilder asmbuild = System.Threading.Thread.GetDomain().
DefineDynamicAssembly(asmname, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder modbuild = asmbuild.DefineDynamicModule( "modulename",
"assemfilename.exe" );
TypeBuilder typebuild1 = modbuild.DefineType( "typename" );
typebuild1.CreateType();
asmbuild.Save( "assemfilename.exe" );
[C++]
AssemblyName* asmname = new AssemblyName();
asmname->Name = S"assemfilename.exe";
AssemblyBuilder* asmbuild = System::Threading::Thread::GetDomain()->
DefineDynamicAssembly(asmname, AssemblyBuilderAccess::RunAndSave);
ModuleBuilder* modbuild = asmbuild->DefineDynamicModule( S"modulename",
S"assemfilename.exe" );
TypeBuilder* typebuild1 = modbuild->DefineType( S"typename" );
typebuild1->CreateType();
asmbuild->Save( S"assemfilename.exe" );
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン
をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- ReflectionPermission SecurityAction.Demand、ReflectionEmit
参照
ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間 | ModuleBuilder.DefineType オーバーロードの一覧