Поделиться через


ModuleBuilder.DefineType Метод

Определение

Создает документ TypeBuilder. Чтобы определить тип значения, следует определить тип, производный от ValueType.

Перегрузки

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

Конструирует TypeBuilder с заданными именем, атрибутами, типом, который расширяет определенный тип, и интерфейсами, реализующими этот тип.

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

Конструирует TypeBuilder с заданными именем, атрибутами, типом, который расширяет определенный тип, а также размером уплотнения и общим размером определенного типа.

DefineType(String, TypeAttributes, Type, PackingSize)

Конструирует TypeBuilder с заданными именем, атрибутами, типом, который расширяет определенный тип, и размером упаковки типа.

DefineType(String, TypeAttributes)

Конструирует TypeBuilder с заданными именем и атрибутами типа.

DefineType(String, TypeAttributes, Type)

Конструирует TypeBuilder с заданным именем, атрибутами и типом, который расширяет определенный тип.

DefineType(String, TypeAttributes, Type, Int32)

Конструирует TypeBuilder с заданными именем, атрибутами, типом, который расширяет определенный тип, и общим размером типа.

DefineType(String)

Создает объект TypeBuilder для закрытого типа с указанным в этом модуле именем.

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

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа и сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.

Применяется к

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

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа и сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.

Применяется к

DefineType(String, TypeAttributes, Type, PackingSize)

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа и сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.

Применяется к

DefineType(String, TypeAttributes)

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа и сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не нужен ReflectionPermission флаг . (См. раздел Проблемы безопасности при отображении отражения.) Чтобы использовать эту функцию, приложение должно быть предназначено для платформа .NET Framework 3.5 или более поздней версии.

Применяется к

DefineType(String, TypeAttributes, Type)

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа и сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.

Применяется к

DefineType(String, TypeAttributes, Type, Int32)

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа, а также сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.

Применяется к

DefineType(String)

Исходный код:
ModuleBuilder.cs
Исходный код:
ModuleBuilder.cs
Исходный код:
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.

Примеры

В следующем примере создается в текущем динамическом TypeBuilder модуле с помощью CreateType, сборка и завершение типа, а также сохранение сборки.

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 (SP1), этому члену ReflectionPermissionFlag.ReflectionEmit больше не требуется ReflectionPermission использовать флаг . (См. раздел Проблемы безопасности при отражении.) Чтобы использовать эту функцию, приложение должно быть ориентировано на платформа .NET Framework 3.5 или более поздней версии.

Применяется к