次の方法で共有


ModuleBuilder.DefineType メソッド (String, TypeAttributes, Type, Type )

型名、属性、定義された型によって拡張される型、および定義された型によって実装されるインターフェイスを指定して、 TypeBuilder を構築します。

Overloads Public Function DefineType( _
   ByVal name As String, _   ByVal attr As TypeAttributes, _   ByVal parent As Type, _   ByVal interfaces() As Type _) As TypeBuilder
[C#]
public TypeBuilder DefineType(stringname,TypeAttributesattr,Typeparent,Type[] interfaces);
[C++]
public: TypeBuilder* DefineType(String* name,TypeAttributesattr,Type* parent,Type* interfaces[]);
[JScript]
public function DefineType(
   name : String,attr : TypeAttributes,parent : Type,interfaces : Type[]) : TypeBuilder;

パラメータ

  • name
    型の完全パス。name に null を埋め込むことはできません。
  • attr
    型に関連付ける属性。
  • parent
    定義された型を拡張する型。
  • interfaces
    型が実装するインターフェイスのリスト。

戻り値

要求された属性をすべて指定して作成された 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 セキュリティ:

参照

ModuleBuilder クラス | ModuleBuilder メンバ | System.Reflection.Emit 名前空間 | ModuleBuilder.DefineType オーバーロードの一覧