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)

为此模块中具有指定名称的专用类型构造 a TypeBuilder

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

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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使用所有请求的属性创建的。

属性

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于

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

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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使用所有请求的属性创建的。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于

DefineType(String, TypeAttributes, Type, PackingSize)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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 对象。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于

DefineType(String, TypeAttributes)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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使用所有请求的属性创建的。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于

DefineType(String, TypeAttributes, Type)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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使用所有请求的属性创建的。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于

DefineType(String, TypeAttributes, Type, Int32)

Source:
ModuleBuilder.cs
Source:
ModuleBuilder.cs
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 对象。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 禁止在程序集的两个不同的模块中具有同名的两种类型。

适用于

DefineType(String)

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

为此模块中具有指定名称的专用类型构造 a 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。

返回

具有指定名称的专用类型。

例外

此模块的父程序集中存在具有给定名称的类型。

-或-

嵌套类型属性在未嵌套的类型上设置。

namenull

示例

以下示例使用 TypeBuilder、生成并完成类型并在当前动态模块中创建一个CreateType,并保存程序集。

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")

注解

类型名称在程序集中必须是唯一的。 在程序集的两个不同的模块中,不能有两个具有相同名称的类型。

适用于