ModuleBuilder.DefineType Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает документ TypeBuilder
. Чтобы определить тип значения, следует определить тип, производный от ValueType.
Перегрузки
DefineType(String, TypeAttributes, Type, Type[]) |
Конструирует |
DefineType(String, TypeAttributes, Type, PackingSize, Int32) |
Конструирует |
DefineType(String, TypeAttributes, Type, PackingSize) |
Конструирует |
DefineType(String, TypeAttributes) |
Конструирует |
DefineType(String, TypeAttributes, Type) |
Конструирует |
DefineType(String, TypeAttributes, Type, Int32) |
Конструирует |
DefineType(String) |
Создает объект |
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 или более поздней версии.