ModuleBuilder.DefineType 메서드

정의

TypeBuilder를 생성합니다. 값 형식을 정의하려면 ValueType에서 파생되는 형식을 정의합니다.

오버로드

DefineType(String, TypeAttributes, Type, PackingSize, Int32)

형식 이름, 특성, 정의된 형식이 확장하는 형식, 정의된 형식의 압축 크기 및 전체 크기를 지정하여 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes, Type, Type[])

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 정의된 형식이 구현하는 인터페이스를 지정하여 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes, Type, PackingSize)

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 해당 형식의 압축 크기를 지정하여 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes, Type)

형식 이름, 형식 특성 및 정의된 형식이 확장하는 형식으로 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes)

지정된 형식 이름 및 형식 특성으로 TypeBuilder를 생성합니다.

DefineType(String)

이 모듈에서 지정된 이름을 사용하는 프라이빗 형식에 대해 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes, Type, Int32)

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 해당 형식의 전체 크기를 지정하여 TypeBuilder를 생성합니다.

DefineType(String, TypeAttributes, Type, PackingSize, Int32)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

형식 이름, 특성, 정의된 형식이 확장하는 형식, 정의된 형식의 압축 크기 및 전체 크기를 지정하여 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr, Type ^ parent, System::Reflection::Emit::PackingSize packingSize, int typesize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type? parent, System.Reflection.Emit.PackingSize packingSize, int typesize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent, System.Reflection.Emit.PackingSize packingSize, int typesize);
member this.DefineType : string * System.Reflection.TypeAttributes * Type * System.Reflection.Emit.PackingSize * int -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes, parent As Type, packingSize As PackingSize, typesize As Integer) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

정의된 형식의 특성입니다.

parent
Type

정의된 형식이 확장하는 형식입니다.

packingSize
PackingSize

형식의 압축 크기입니다.

typesize
Int32

형식의 총 크기입니다.

반환

요청된 특성을 모두 사용하여 만든 TypeBuilder입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String, TypeAttributes, Type, Type[])

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 정의된 형식이 구현하는 인터페이스를 지정하여 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr, Type ^ parent, cli::array <Type ^> ^ interfaces);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type? parent, Type[]? interfaces);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent, Type[] interfaces);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent, Type[] interfaces);
member this.DefineType : string * System.Reflection.TypeAttributes * Type * Type[] -> System.Reflection.Emit.TypeBuilder
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.DefineType : string * System.Reflection.TypeAttributes * Type * Type[] -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes, parent As Type, interfaces As Type()) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

해당 형식과 연결될 특성입니다.

parent
Type

정의된 형식이 확장하는 형식입니다.

interfaces
Type[]

해당 형식이 구현하는 인터페이스의 목록입니다.

반환

요청된 특성을 모두 사용하여 만든 TypeBuilder입니다.

특성

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String, TypeAttributes, Type, PackingSize)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 해당 형식의 압축 크기를 지정하여 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr, Type ^ parent, System::Reflection::Emit::PackingSize packsize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type? parent, System.Reflection.Emit.PackingSize packsize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent, System.Reflection.Emit.PackingSize packsize);
member this.DefineType : string * System.Reflection.TypeAttributes * Type * System.Reflection.Emit.PackingSize -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes, parent As Type, packsize As PackingSize) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

정의된 형식의 특성입니다.

parent
Type

정의된 형식이 확장하는 형식입니다.

packsize
PackingSize

형식의 압축 크기입니다.

반환

TypeBuilder 개체입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String, TypeAttributes, Type)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

형식 이름, 형식 특성 및 정의된 형식이 확장하는 형식으로 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr, Type ^ parent);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type? parent);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent);
member this.DefineType : string * System.Reflection.TypeAttributes * Type -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes, parent As Type) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

해당 형식과 연결될 특성입니다.

parent
Type

정의된 형식이 확장하는 형식입니다.

반환

요청된 특성을 모두 사용하여 만든 TypeBuilder입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그를 ReflectionPermissionFlag.ReflectionEmit 사용할 필요가 없습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String, TypeAttributes)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

지정된 형식 이름 및 형식 특성으로 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr);
member this.DefineType : string * System.Reflection.TypeAttributes -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

정의된 형식의 특성입니다.

반환

요청된 특성을 모두 사용하여 만든 TypeBuilder입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

이 모듈에서 지정된 이름을 사용하는 프라이빗 형식에 대해 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name);
public System.Reflection.Emit.TypeBuilder DefineType (string name);
member this.DefineType : string -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String) As TypeBuilder

매개 변수

name
String

네임스페이스를 포함한 형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

반환

지정된 이름을 사용하는 프라이빗 형식입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서는 이름이 같은 두 형식을 가질 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상

DefineType(String, TypeAttributes, Type, Int32)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs

형식 이름, 특성, 정의된 형식이 확장하는 형식 및 해당 형식의 전체 크기를 지정하여 TypeBuilder를 생성합니다.

public:
 System::Reflection::Emit::TypeBuilder ^ DefineType(System::String ^ name, System::Reflection::TypeAttributes attr, Type ^ parent, int typesize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type? parent, int typesize);
public System.Reflection.Emit.TypeBuilder DefineType (string name, System.Reflection.TypeAttributes attr, Type parent, int typesize);
member this.DefineType : string * System.Reflection.TypeAttributes * Type * int -> System.Reflection.Emit.TypeBuilder
Public Function DefineType (name As String, attr As TypeAttributes, parent As Type, typesize As Integer) As TypeBuilder

매개 변수

name
String

형식의 전체 경로입니다. name에는 내장된 null이 포함될 수 없습니다.

attr
TypeAttributes

정의된 형식의 특성입니다.

parent
Type

정의된 형식이 확장하는 형식입니다.

typesize
Int32

형식의 총 크기입니다.

반환

TypeBuilder 개체입니다.

예외

이 모듈의 부모 어셈블리에 지정된 이름의 형식이 이미 있는 경우

또는

중첩되지 않은 형식에 대해 중첩된 형식 특성이 설정된 경우

name이(가) null인 경우

예제

다음 예제에서는 를 사용하여 CreateType현재 동적 모듈에서 을 만들고 TypeBuilder 형식을 빌드하고 완료하고 어셈블리를 저장합니다.

AssemblyName^ asmname = gcnew 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" );
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" );
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")

설명

형식 이름은 어셈블리 내에서 고유해야 합니다. 어셈블리의 서로 다른 두 모듈에서 이름이 같은 두 형식은 사용할 수 없습니다.

참고

.NET Framework 2.0 서비스 팩 1부터 이 멤버는 ReflectionPermission 더 이상 플래그가 ReflectionPermissionFlag.ReflectionEmit 필요하지 않습니다. (리플렉션 내보내기의 보안 문제를 참조하세요.) 이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5 이상을 대상으로 해야 합니다.

적용 대상