GenericTypeParameterBuilder Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется.
public ref class GenericTypeParameterBuilder sealed : Type
public ref class GenericTypeParameterBuilder sealed : System::Reflection::TypeInfo
public ref class GenericTypeParameterBuilder abstract : System::Reflection::TypeInfo
public sealed class GenericTypeParameterBuilder : Type
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
public abstract class GenericTypeParameterBuilder : System.Reflection.TypeInfo
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : Type
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class GenericTypeParameterBuilder : System.Reflection.TypeInfo
type GenericTypeParameterBuilder = class
inherit Type
type GenericTypeParameterBuilder = class
inherit TypeInfo
[<System.Runtime.InteropServices.ComVisible(true)>]
type GenericTypeParameterBuilder = class
inherit Type
[<System.Runtime.InteropServices.ComVisible(true)>]
type GenericTypeParameterBuilder = class
inherit TypeInfo
Public NotInheritable Class GenericTypeParameterBuilder
Inherits Type
Public NotInheritable Class GenericTypeParameterBuilder
Inherits TypeInfo
Public MustInherit Class GenericTypeParameterBuilder
Inherits TypeInfo
- Наследование
- Наследование
- Наследование
- Атрибуты
Примеры
В следующем примере кода создается универсальный тип с двумя параметрами типа и сохраняется в GenericEmitExample1.dll сборки. Для просмотра созданных типов можно использовать Ildasm.exe (дизассемблировщик IL ). Более подробное описание действий, связанных с определением динамического универсального типа, см. в разделе Практическое руководство. Определение универсального типа с помощью отражения.
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Collections::Generic;
// Dummy class to satisfy TFirst constraints.
//
public ref class Example {};
// Define a trivial base class and two trivial interfaces
// to use when demonstrating constraints.
//
public ref class ExampleBase {};
public interface class IExampleA {};
public interface class IExampleB {};
// Define a trivial type that can substitute for type parameter
// TSecond.
//
public ref class ExampleDerived : ExampleBase, IExampleA, IExampleB {};
// List the constraint flags. The GenericParameterAttributes
// enumeration contains two sets of attributes, variance and
// constraints. For this example, only constraints are used.
//
static void ListConstraintAttributes( Type^ t )
{
// Mask off the constraint flags.
GenericParameterAttributes constraints =
t->GenericParameterAttributes &
GenericParameterAttributes::SpecialConstraintMask;
if ((constraints & GenericParameterAttributes::ReferenceTypeConstraint)
!= GenericParameterAttributes::None)
Console::WriteLine( L" ReferenceTypeConstraint");
if ((constraints & GenericParameterAttributes::NotNullableValueTypeConstraint)
!= GenericParameterAttributes::None)
Console::WriteLine( L" NotNullableValueTypeConstraint");
if ((constraints & GenericParameterAttributes::DefaultConstructorConstraint)
!= GenericParameterAttributes::None)
Console::WriteLine( L" DefaultConstructorConstraint");
}
static void DisplayGenericParameters( Type^ t )
{
if (!t->IsGenericType)
{
Console::WriteLine( L"Type '{0}' is not generic." );
return;
}
if (!t->IsGenericTypeDefinition)
t = t->GetGenericTypeDefinition();
array<Type^>^ typeParameters = t->GetGenericArguments();
Console::WriteLine( L"\r\nListing {0} type parameters for type '{1}'.",
typeParameters->Length, t );
for each ( Type^ tParam in typeParameters )
{
Console::WriteLine( L"\r\nType parameter {0}:",
tParam->ToString() );
for each (Type^ c in tParam->GetGenericParameterConstraints())
{
if (c->IsInterface)
Console::WriteLine( L" Interface constraint: {0}", c);
else
Console::WriteLine( L" Base type constraint: {0}", c);
}
ListConstraintAttributes(tParam);
}
}
void main()
{
// Define a dynamic assembly to contain the sample type. The
// assembly will be run and also saved to disk, so
// AssemblyBuilderAccess.RunAndSave is specified.
//
AppDomain^ myDomain = AppDomain::CurrentDomain;
AssemblyName^ myAsmName = gcnew AssemblyName( L"GenericEmitExample1" );
AssemblyBuilder^ myAssembly = myDomain->DefineDynamicAssembly(
myAsmName, AssemblyBuilderAccess::RunAndSave );
// An assembly is made up of executable modules. For a single-
// module assembly, the module name and file name are the same
// as the assembly name.
//
ModuleBuilder^ myModule = myAssembly->DefineDynamicModule(
myAsmName->Name, String::Concat( myAsmName->Name, L".dll" ) );
// Get type objects for the base class trivial interfaces to
// be used as constraints.
//
Type^ baseType = ExampleBase::typeid;
Type^ interfaceA = IExampleA::typeid;
Type^ interfaceB = IExampleB::typeid;
// Define the sample type.
//
TypeBuilder^ myType = myModule->DefineType( L"Sample",
TypeAttributes::Public );
Console::WriteLine( L"Type 'Sample' is generic: {0}",
myType->IsGenericType );
// Define type parameters for the type. Until you do this,
// the type is not generic, as the preceding and following
// WriteLine statements show. The type parameter names are
// specified as an array of strings. To make the code
// easier to read, each GenericTypeParameterBuilder is placed
// in a variable with the same name as the type parameter.
//
array<String^>^typeParamNames = {L"TFirst",L"TSecond"};
array<GenericTypeParameterBuilder^>^typeParams =
myType->DefineGenericParameters( typeParamNames );
GenericTypeParameterBuilder^ TFirst = typeParams[0];
GenericTypeParameterBuilder^ TSecond = typeParams[1];
Console::WriteLine( L"Type 'Sample' is generic: {0}",
myType->IsGenericType );
// Apply constraints to the type parameters.
//
// A type that is substituted for the first parameter, TFirst,
// must be a reference type and must have a parameterless
// constructor.
TFirst->SetGenericParameterAttributes(
GenericParameterAttributes::DefaultConstructorConstraint |
GenericParameterAttributes::ReferenceTypeConstraint
);
// A type that is substituted for the second type
// parameter must implement IExampleA and IExampleB, and
// inherit from the trivial test class ExampleBase. The
// interface constraints are specified as an array
// containing the interface types.
array<Type^>^interfaceTypes = { interfaceA, interfaceB };
TSecond->SetInterfaceConstraints( interfaceTypes );
TSecond->SetBaseTypeConstraint( baseType );
// The following code adds a private field named ExampleField,
// of type TFirst.
FieldBuilder^ exField =
myType->DefineField("ExampleField", TFirst,
FieldAttributes::Private);
// Define a static method that takes an array of TFirst and
// returns a List<TFirst> containing all the elements of
// the array. To define this method it is necessary to create
// the type List<TFirst> by calling MakeGenericType on the
// generic type definition, generic<T> List.
// The parameter type is created by using the
// MakeArrayType method.
//
Type^ listOf = List::typeid;
Type^ listOfTFirst = listOf->MakeGenericType(TFirst);
array<Type^>^ mParamTypes = { TFirst->MakeArrayType() };
MethodBuilder^ exMethod =
myType->DefineMethod("ExampleMethod",
MethodAttributes::Public | MethodAttributes::Static,
listOfTFirst,
mParamTypes);
// Emit the method body.
// The method body consists of just three opcodes, to load
// the input array onto the execution stack, to call the
// List<TFirst> constructor that takes IEnumerable<TFirst>,
// which does all the work of putting the input elements into
// the list, and to return, leaving the list on the stack. The
// hard work is getting the constructor.
//
// The GetConstructor method is not supported on a
// GenericTypeParameterBuilder, so it is not possible to get
// the constructor of List<TFirst> directly. There are two
// steps, first getting the constructor of generic<T> List and then
// calling a method that converts it to the corresponding
// constructor of List<TFirst>.
//
// The constructor needed here is the one that takes an
// IEnumerable<T>. Note, however, that this is not the
// generic type definition of generic<T> IEnumerable; instead, the
// T from generic<T> List must be substituted for the T of
// generic<T> IEnumerable. (This seems confusing only because both
// types have type parameters named T. That is why this example
// uses the somewhat silly names TFirst and TSecond.) To get
// the type of the constructor argument, take the generic
// type definition generic<T> IEnumerable and
// call MakeGenericType with the first generic type parameter
// of generic<T> List. The constructor argument list must be passed
// as an array, with just one argument in this case.
//
// Now it is possible to get the constructor of generic<T> List,
// using GetConstructor on the generic type definition. To get
// the constructor of List<TFirst>, pass List<TFirst> and
// the constructor from generic<T> List to the static
// TypeBuilder.GetConstructor method.
//
ILGenerator^ ilgen = exMethod->GetILGenerator();
Type^ ienumOf = IEnumerable::typeid;
Type^ TfromListOf = listOf->GetGenericArguments()[0];
Type^ ienumOfT = ienumOf->MakeGenericType(TfromListOf);
array<Type^>^ ctorArgs = {ienumOfT};
ConstructorInfo^ ctorPrep = listOf->GetConstructor(ctorArgs);
ConstructorInfo^ ctor =
TypeBuilder::GetConstructor(listOfTFirst, ctorPrep);
ilgen->Emit(OpCodes::Ldarg_0);
ilgen->Emit(OpCodes::Newobj, ctor);
ilgen->Emit(OpCodes::Ret);
// Create the type and save the assembly.
Type^ finished = myType->CreateType();
myAssembly->Save( String::Concat( myAsmName->Name, L".dll" ) );
// Invoke the method.
// ExampleMethod is not generic, but the type it belongs to is
// generic, so in order to get a MethodInfo that can be invoked
// it is necessary to create a constructed type. The Example
// class satisfies the constraints on TFirst, because it is a
// reference type and has a default constructor. In order to
// have a class that satisfies the constraints on TSecond,
// this code example defines the ExampleDerived type. These
// two types are passed to MakeGenericMethod to create the
// constructed type.
//
array<Type^>^ typeArgs =
{ Example::typeid, ExampleDerived::typeid };
Type^ constructed = finished->MakeGenericType(typeArgs);
MethodInfo^ mi = constructed->GetMethod("ExampleMethod");
// Create an array of Example objects, as input to the generic
// method. This array must be passed as the only element of an
// array of arguments. The first argument of Invoke is
// null, because ExampleMethod is static. Display the count
// on the resulting List<Example>.
//
array<Example^>^ input = { gcnew Example(), gcnew Example() };
array<Object^>^ arguments = { input };
List<Example^>^ listX =
(List<Example^>^) mi->Invoke(nullptr, arguments);
Console::WriteLine(
"\nThere are {0} elements in the List<Example>.",
listX->Count);
DisplayGenericParameters(finished);
}
/* This code example produces the following output:
Type 'Sample' is generic: False
Type 'Sample' is generic: True
There are 2 elements in the List<Example>.
Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.
Type parameter TFirst:
ReferenceTypeConstraint
DefaultConstructorConstraint
Type parameter TSecond:
Interface constraint: IExampleA
Interface constraint: IExampleB
Base type constraint: ExampleBase
*/
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Collections.Generic;
// Define a trivial base class and two trivial interfaces
// to use when demonstrating constraints.
//
public class ExampleBase {}
public interface IExampleA {}
public interface IExampleB {}
// Define a trivial type that can substitute for type parameter
// TSecond.
//
public class ExampleDerived : ExampleBase, IExampleA, IExampleB {}
public class Example
{
public static void Main()
{
// Define a dynamic assembly to contain the sample type. The
// assembly will not be run, but only saved to disk, so
// AssemblyBuilderAccess.Save is specified.
//
AppDomain myDomain = AppDomain.CurrentDomain;
AssemblyName myAsmName = new AssemblyName("GenericEmitExample1");
AssemblyBuilder myAssembly =
myDomain.DefineDynamicAssembly(myAsmName,
AssemblyBuilderAccess.RunAndSave);
// An assembly is made up of executable modules. For a single-
// module assembly, the module name and file name are the same
// as the assembly name.
//
ModuleBuilder myModule =
myAssembly.DefineDynamicModule(myAsmName.Name,
myAsmName.Name + ".dll");
// Get type objects for the base class trivial interfaces to
// be used as constraints.
//
Type baseType = typeof(ExampleBase);
Type interfaceA = typeof(IExampleA);
Type interfaceB = typeof(IExampleB);
// Define the sample type.
//
TypeBuilder myType =
myModule.DefineType("Sample", TypeAttributes.Public);
Console.WriteLine("Type 'Sample' is generic: {0}",
myType.IsGenericType);
// Define type parameters for the type. Until you do this,
// the type is not generic, as the preceding and following
// WriteLine statements show. The type parameter names are
// specified as an array of strings. To make the code
// easier to read, each GenericTypeParameterBuilder is placed
// in a variable with the same name as the type parameter.
//
string[] typeParamNames = {"TFirst", "TSecond"};
GenericTypeParameterBuilder[] typeParams =
myType.DefineGenericParameters(typeParamNames);
GenericTypeParameterBuilder TFirst = typeParams[0];
GenericTypeParameterBuilder TSecond = typeParams[1];
Console.WriteLine("Type 'Sample' is generic: {0}",
myType.IsGenericType);
// Apply constraints to the type parameters.
//
// A type that is substituted for the first parameter, TFirst,
// must be a reference type and must have a parameterless
// constructor.
TFirst.SetGenericParameterAttributes(
GenericParameterAttributes.DefaultConstructorConstraint |
GenericParameterAttributes.ReferenceTypeConstraint);
// A type that is substituted for the second type
// parameter must implement IExampleA and IExampleB, and
// inherit from the trivial test class ExampleBase. The
// interface constraints are specified as an array
// containing the interface types.
TSecond.SetBaseTypeConstraint(baseType);
Type[] interfaceTypes = {interfaceA, interfaceB};
TSecond.SetInterfaceConstraints(interfaceTypes);
// The following code adds a private field named ExampleField,
// of type TFirst.
FieldBuilder exField =
myType.DefineField("ExampleField", TFirst,
FieldAttributes.Private);
// Define a static method that takes an array of TFirst and
// returns a List<TFirst> containing all the elements of
// the array. To define this method it is necessary to create
// the type List<TFirst> by calling MakeGenericType on the
// generic type definition, List<T>. (The T is omitted with
// the typeof operator when you get the generic type
// definition.) The parameter type is created by using the
// MakeArrayType method.
//
Type listOf = typeof(List<>);
Type listOfTFirst = listOf.MakeGenericType(TFirst);
Type[] mParamTypes = {TFirst.MakeArrayType()};
MethodBuilder exMethod =
myType.DefineMethod("ExampleMethod",
MethodAttributes.Public | MethodAttributes.Static,
listOfTFirst,
mParamTypes);
// Emit the method body.
// The method body consists of just three opcodes, to load
// the input array onto the execution stack, to call the
// List<TFirst> constructor that takes IEnumerable<TFirst>,
// which does all the work of putting the input elements into
// the list, and to return, leaving the list on the stack. The
// hard work is getting the constructor.
//
// The GetConstructor method is not supported on a
// GenericTypeParameterBuilder, so it is not possible to get
// the constructor of List<TFirst> directly. There are two
// steps, first getting the constructor of List<T> and then
// calling a method that converts it to the corresponding
// constructor of List<TFirst>.
//
// The constructor needed here is the one that takes an
// IEnumerable<T>. Note, however, that this is not the
// generic type definition of IEnumerable<T>; instead, the
// T from List<T> must be substituted for the T of
// IEnumerable<T>. (This seems confusing only because both
// types have type parameters named T. That is why this example
// uses the somewhat silly names TFirst and TSecond.) To get
// the type of the constructor argument, take the generic
// type definition IEnumerable<T> (expressed as
// IEnumerable<> when you use the typeof operator) and
// call MakeGenericType with the first generic type parameter
// of List<T>. The constructor argument list must be passed
// as an array, with just one argument in this case.
//
// Now it is possible to get the constructor of List<T>,
// using GetConstructor on the generic type definition. To get
// the constructor of List<TFirst>, pass List<TFirst> and
// the constructor from List<T> to the static
// TypeBuilder.GetConstructor method.
//
ILGenerator ilgen = exMethod.GetILGenerator();
Type ienumOf = typeof(IEnumerable<>);
Type TfromListOf = listOf.GetGenericArguments()[0];
Type ienumOfT = ienumOf.MakeGenericType(TfromListOf);
Type[] ctorArgs = {ienumOfT};
ConstructorInfo ctorPrep = listOf.GetConstructor(ctorArgs);
ConstructorInfo ctor =
TypeBuilder.GetConstructor(listOfTFirst, ctorPrep);
ilgen.Emit(OpCodes.Ldarg_0);
ilgen.Emit(OpCodes.Newobj, ctor);
ilgen.Emit(OpCodes.Ret);
// Create the type and save the assembly.
Type finished = myType.CreateType();
myAssembly.Save(myAsmName.Name+".dll");
// Invoke the method.
// ExampleMethod is not generic, but the type it belongs to is
// generic, so in order to get a MethodInfo that can be invoked
// it is necessary to create a constructed type. The Example
// class satisfies the constraints on TFirst, because it is a
// reference type and has a default constructor. In order to
// have a class that satisfies the constraints on TSecond,
// this code example defines the ExampleDerived type. These
// two types are passed to MakeGenericMethod to create the
// constructed type.
//
Type[] typeArgs = {typeof(Example), typeof(ExampleDerived)};
Type constructed = finished.MakeGenericType(typeArgs);
MethodInfo mi = constructed.GetMethod("ExampleMethod");
// Create an array of Example objects, as input to the generic
// method. This array must be passed as the only element of an
// array of arguments. The first argument of Invoke is
// null, because ExampleMethod is static. Display the count
// on the resulting List<Example>.
//
Example[] input = {new Example(), new Example()};
object[] arguments = {input};
List<Example> listX =
(List<Example>) mi.Invoke(null, arguments);
Console.WriteLine(
"\nThere are {0} elements in the List<Example>.",
listX.Count);
DisplayGenericParameters(finished);
}
private static void DisplayGenericParameters(Type t)
{
if (!t.IsGenericType)
{
Console.WriteLine("Type '{0}' is not generic.");
return;
}
if (!t.IsGenericTypeDefinition)
{
t = t.GetGenericTypeDefinition();
}
Type[] typeParameters = t.GetGenericArguments();
Console.WriteLine("\nListing {0} type parameters for type '{1}'.",
typeParameters.Length, t);
foreach( Type tParam in typeParameters )
{
Console.WriteLine("\r\nType parameter {0}:", tParam.ToString());
foreach( Type c in tParam.GetGenericParameterConstraints() )
{
if (c.IsInterface)
{
Console.WriteLine(" Interface constraint: {0}", c);
}
else
{
Console.WriteLine(" Base type constraint: {0}", c);
}
}
ListConstraintAttributes(tParam);
}
}
// List the constraint flags. The GenericParameterAttributes
// enumeration contains two sets of attributes, variance and
// constraints. For this example, only constraints are used.
//
private static void ListConstraintAttributes(Type t)
{
// Mask off the constraint flags.
GenericParameterAttributes constraints =
t.GenericParameterAttributes & GenericParameterAttributes.SpecialConstraintMask;
if ((constraints & GenericParameterAttributes.ReferenceTypeConstraint)
!= GenericParameterAttributes.None)
{
Console.WriteLine(" ReferenceTypeConstraint");
}
if ((constraints & GenericParameterAttributes.NotNullableValueTypeConstraint)
!= GenericParameterAttributes.None)
{
Console.WriteLine(" NotNullableValueTypeConstraint");
}
if ((constraints & GenericParameterAttributes.DefaultConstructorConstraint)
!=GenericParameterAttributes.None)
{
Console.WriteLine(" DefaultConstructorConstraint");
}
}
}
/* This code example produces the following output:
Type 'Sample' is generic: False
Type 'Sample' is generic: True
There are 2 elements in the List<Example>.
Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.
Type parameter TFirst:
ReferenceTypeConstraint
DefaultConstructorConstraint
Type parameter TSecond:
Interface constraint: IExampleA
Interface constraint: IExampleB
Base type constraint: ExampleBase
*/
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Collections.Generic
' Define a trivial base class and two trivial interfaces
' to use when demonstrating constraints.
'
Public Class ExampleBase
End Class
Public Interface IExampleA
End Interface
Public Interface IExampleB
End Interface
' Define a trivial type that can substitute for type parameter
' TSecond.
'
Public Class ExampleDerived
Inherits ExampleBase
Implements IExampleA, IExampleB
End Class
Public Class Example
Public Shared Sub Main()
' Define a dynamic assembly to contain the sample type. The
' assembly will not be run, but only saved to disk, so
' AssemblyBuilderAccess.Save is specified.
'
Dim myDomain As AppDomain = AppDomain.CurrentDomain
Dim myAsmName As New AssemblyName("GenericEmitExample1")
Dim myAssembly As AssemblyBuilder = myDomain.DefineDynamicAssembly( _
myAsmName, _
AssemblyBuilderAccess.RunAndSave)
' An assembly is made up of executable modules. For a single-
' module assembly, the module name and file name are the same
' as the assembly name.
'
Dim myModule As ModuleBuilder = myAssembly.DefineDynamicModule( _
myAsmName.Name, _
myAsmName.Name & ".dll")
' Get type objects for the base class trivial interfaces to
' be used as constraints.
'
Dim baseType As Type = GetType(ExampleBase)
Dim interfaceA As Type = GetType(IExampleA)
Dim interfaceB As Type = GetType(IExampleB)
' Define the sample type.
'
Dim myType As TypeBuilder = myModule.DefineType( _
"Sample", _
TypeAttributes.Public)
Console.WriteLine("Type 'Sample' is generic: {0}", _
myType.IsGenericType)
' Define type parameters for the type. Until you do this,
' the type is not generic, as the preceding and following
' WriteLine statements show. The type parameter names are
' specified as an array of strings. To make the code
' easier to read, each GenericTypeParameterBuilder is placed
' in a variable with the same name as the type parameter.
'
Dim typeParamNames() As String = {"TFirst", "TSecond"}
Dim typeParams() As GenericTypeParameterBuilder = _
myType.DefineGenericParameters(typeParamNames)
Dim TFirst As GenericTypeParameterBuilder = typeParams(0)
Dim TSecond As GenericTypeParameterBuilder = typeParams(1)
Console.WriteLine("Type 'Sample' is generic: {0}", _
myType.IsGenericType)
' Apply constraints to the type parameters.
'
' A type that is substituted for the first parameter, TFirst,
' must be a reference type and must have a parameterless
' constructor.
TFirst.SetGenericParameterAttributes( _
GenericParameterAttributes.DefaultConstructorConstraint _
Or GenericParameterAttributes.ReferenceTypeConstraint)
' A type that is substituted for the second type
' parameter must implement IExampleA and IExampleB, and
' inherit from the trivial test class ExampleBase. The
' interface constraints are specified as an array
' containing the interface types.
TSecond.SetBaseTypeConstraint(baseType)
Dim interfaceTypes() As Type = {interfaceA, interfaceB}
TSecond.SetInterfaceConstraints(interfaceTypes)
' The following code adds a private field named ExampleField,
' of type TFirst.
Dim exField As FieldBuilder = _
myType.DefineField("ExampleField", TFirst, _
FieldAttributes.Private)
' Define a Shared method that takes an array of TFirst and
' returns a List(Of TFirst) containing all the elements of
' the array. To define this method it is necessary to create
' the type List(Of TFirst) by calling MakeGenericType on the
' generic type definition, List(Of T). (The T is omitted with
' the GetType operator when you get the generic type
' definition.) The parameter type is created by using the
' MakeArrayType method.
'
Dim listOf As Type = GetType(List(Of ))
Dim listOfTFirst As Type = listOf.MakeGenericType(TFirst)
Dim mParamTypes() As Type = { TFirst.MakeArrayType() }
Dim exMethod As MethodBuilder = _
myType.DefineMethod("ExampleMethod", _
MethodAttributes.Public Or MethodAttributes.Static, _
listOfTFirst, _
mParamTypes)
' Emit the method body.
' The method body consists of just three opcodes, to load
' the input array onto the execution stack, to call the
' List(Of TFirst) constructor that takes IEnumerable(Of TFirst),
' which does all the work of putting the input elements into
' the list, and to return, leaving the list on the stack. The
' hard work is getting the constructor.
'
' The GetConstructor method is not supported on a
' GenericTypeParameterBuilder, so it is not possible to get
' the constructor of List(Of TFirst) directly. There are two
' steps, first getting the constructor of List(Of T) and then
' calling a method that converts it to the corresponding
' constructor of List(Of TFirst).
'
' The constructor needed here is the one that takes an
' IEnumerable(Of T). Note, however, that this is not the
' generic type definition of IEnumerable(Of T); instead, the
' T from List(Of T) must be substituted for the T of
' IEnumerable(Of T). (This seems confusing only because both
' types have type parameters named T. That is why this example
' uses the somewhat silly names TFirst and TSecond.) To get
' the type of the constructor argument, take the generic
' type definition IEnumerable(Of T) (expressed as
' IEnumerable(Of ) when you use the GetType operator) and
' call MakeGenericType with the first generic type parameter
' of List(Of T). The constructor argument list must be passed
' as an array, with just one argument in this case.
'
' Now it is possible to get the constructor of List(Of T),
' using GetConstructor on the generic type definition. To get
' the constructor of List(Of TFirst), pass List(Of TFirst) and
' the constructor from List(Of T) to the static
' TypeBuilder.GetConstructor method.
'
Dim ilgen As ILGenerator = exMethod.GetILGenerator()
Dim ienumOf As Type = GetType(IEnumerable(Of ))
Dim listOfTParams() As Type = listOf.GetGenericArguments()
Dim TfromListOf As Type = listOfTParams(0)
Dim ienumOfT As Type = ienumOf.MakeGenericType(TfromListOf)
Dim ctorArgs() As Type = { ienumOfT }
Dim ctorPrep As ConstructorInfo = _
listOf.GetConstructor(ctorArgs)
Dim ctor As ConstructorInfo = _
TypeBuilder.GetConstructor(listOfTFirst, ctorPrep)
ilgen.Emit(OpCodes.Ldarg_0)
ilgen.Emit(OpCodes.Newobj, ctor)
ilgen.Emit(OpCodes.Ret)
' Create the type and save the assembly.
Dim finished As Type = myType.CreateType()
myAssembly.Save(myAsmName.Name & ".dll")
' Invoke the method.
' ExampleMethod is not generic, but the type it belongs to is
' generic, so in order to get a MethodInfo that can be invoked
' it is necessary to create a constructed type. The Example
' class satisfies the constraints on TFirst, because it is a
' reference type and has a default constructor. In order to
' have a class that satisfies the constraints on TSecond,
' this code example defines the ExampleDerived type. These
' two types are passed to MakeGenericMethod to create the
' constructed type.
'
Dim typeArgs() As Type = _
{ GetType(Example), GetType(ExampleDerived) }
Dim constructed As Type = finished.MakeGenericType(typeArgs)
Dim mi As MethodInfo = constructed.GetMethod("ExampleMethod")
' Create an array of Example objects, as input to the generic
' method. This array must be passed as the only element of an
' array of arguments. The first argument of Invoke is
' Nothing, because ExampleMethod is Shared. Display the count
' on the resulting List(Of Example).
'
Dim input() As Example = { New Example(), New Example() }
Dim arguments() As Object = { input }
Dim listX As List(Of Example) = mi.Invoke(Nothing, arguments)
Console.WriteLine(vbLf & _
"There are {0} elements in the List(Of Example).", _
listX.Count _
)
DisplayGenericParameters(finished)
End Sub
Private Shared Sub DisplayGenericParameters(ByVal t As Type)
If Not t.IsGenericType Then
Console.WriteLine("Type '{0}' is not generic.")
Return
End If
If Not t.IsGenericTypeDefinition Then _
t = t.GetGenericTypeDefinition()
Dim typeParameters() As Type = t.GetGenericArguments()
Console.WriteLine(vbCrLf & _
"Listing {0} type parameters for type '{1}'.", _
typeParameters.Length, t)
For Each tParam As Type In typeParameters
Console.WriteLine(vbCrLf & "Type parameter {0}:", _
tParam.ToString())
For Each c As Type In tParam.GetGenericParameterConstraints()
If c.IsInterface Then
Console.WriteLine(" Interface constraint: {0}", c)
Else
Console.WriteLine(" Base type constraint: {0}", c)
End If
Next
ListConstraintAttributes(tParam)
Next tParam
End Sub
' List the constraint flags. The GenericParameterAttributes
' enumeration contains two sets of attributes, variance and
' constraints. For this example, only constraints are used.
'
Private Shared Sub ListConstraintAttributes(ByVal t As Type)
' Mask off the constraint flags.
Dim constraints As GenericParameterAttributes = _
t.GenericParameterAttributes And _
GenericParameterAttributes.SpecialConstraintMask
If (constraints And GenericParameterAttributes.ReferenceTypeConstraint) _
<> GenericParameterAttributes.None Then _
Console.WriteLine(" ReferenceTypeConstraint")
If (constraints And GenericParameterAttributes.NotNullableValueTypeConstraint) _
<> GenericParameterAttributes.None Then _
Console.WriteLine(" NotNullableValueTypeConstraint")
If (constraints And GenericParameterAttributes.DefaultConstructorConstraint) _
<> GenericParameterAttributes.None Then _
Console.WriteLine(" DefaultConstructorConstraint")
End Sub
End Class
' This code example produces the following output:
'
'Type 'Sample' is generic: False
'Type 'Sample' is generic: True
'
'There are 2 elements in the List(Of Example).
'
'Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.
'
'Type parameter TFirst:
' ReferenceTypeConstraint
' DefaultConstructorConstraint
'
'Type parameter TSecond:
' Interface constraint: IExampleA
' Interface constraint: IExampleB
' Base type constraint: ExampleBase
Комментарии
Массив GenericTypeParameterBuilder объектов можно получить с помощью TypeBuilder.DefineGenericParameters метода для добавления параметров типа в динамический тип, что делает его универсальным типом, или с помощью MethodBuilder.DefineGenericParameters метода для добавления параметров типа в динамический метод. Используйте объекты для GenericTypeParameterBuilder добавления ограничений к параметрам типа. Ограничения бывают трех видов:
Ограничение базового типа указывает, что любой тип, назначенный параметру универсального типа, должен быть производным от определенного базового типа. Задайте это ограничение с помощью SetBaseTypeConstraint метода .
Ограничение интерфейса указывает, что любой тип, назначенный параметру универсального типа, должен реализовывать определенный интерфейс. Задайте ограничения интерфейса с помощью SetInterfaceConstraints метода .
Специальные ограничения указывают, что любой тип, назначенный параметру универсального типа, должен иметь конструктор без параметров, быть ссылочным типом или быть типом значения. Задайте специальные ограничения для параметра типа с помощью SetGenericParameterAttributes метода .
Ограничения интерфейса и специальные ограничения нельзя получить с помощью методов GenericTypeParameterBuilder класса . После создания универсального типа, содержащего параметры типа, можно использовать его Type объект для отражения ограничений. Type.GetGenericArguments Используйте метод , чтобы получить параметры типа, и для каждого параметра типа используйте Type.GetGenericParameterConstraints метод , чтобы получить ограничения базового типа и ограничения интерфейса, а Type.GenericParameterAttributes также свойство , чтобы получить специальные ограничения.
Конструкторы
GenericTypeParameterBuilder() |
Инициализирует новый экземпляр класса GenericTypeParameterBuilder. |
Свойства
Assembly |
Возвращает объект Assembly, представляющий динамическую сборку, содержащую определение универсального типа, которой принадлежит текущий параметр типа. |
AssemblyQualifiedName |
Получает значение |
Attributes |
Возвращает атрибуты, связанные с объектом Type. |
Attributes |
Возвращает атрибуты, связанные с объектом Type. (Унаследовано от Type) |
Attributes |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
BaseType |
Возвращает ограничение базового типа для текущего параметра универсального типа. |
ContainsGenericParameters |
Получает значение |
CustomAttributes |
Получает коллекцию, содержащую пользовательские атрибуты этого члена. (Унаследовано от MemberInfo) |
DeclaredConstructors |
Получает коллекцию конструкторов, объявленных текущим типом. (Унаследовано от TypeInfo) |
DeclaredEvents |
Получает коллекцию событий, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaredFields |
Получает коллекцию полей, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaredMembers |
Получает коллекцию членов, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaredMethods |
Получает коллекцию методов, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaredNestedTypes |
Получает коллекцию вложенных типов, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaredProperties |
Возвращает коллекцию свойств, определенных текущим типом. (Унаследовано от TypeInfo) |
DeclaringMethod |
Возвращает метод MethodInfo, который представляет объявляемый метод, если текущий GenericTypeParameterBuilder представляет параметр типа универсального метода. |
DeclaringType |
Возвращает определение универсального типа или определение универсального метода, которому принадлежит параметр универсального типа. |
FullName |
Получает значение |
GenericParameterAttributes |
Возвращает сочетание флагов GenericParameterAttributes, описывающих ковариацию и особые ограничения текущего параметра универсального типа. |
GenericParameterAttributes |
Возвращает сочетание флагов GenericParameterAttributes, описывающих ковариацию и особые ограничения текущего параметра универсального типа. (Унаследовано от Type) |
GenericParameterPosition |
Возвращает позицию параметра типа в списке параметров типа универсального типа или метода, который объявил этот параметр. |
GenericTypeArguments |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GenericTypeArguments |
Получает массив аргументов универсального типа для этого типа. (Унаследовано от Type) |
GenericTypeArguments |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GenericTypeParameters |
Возвращает массив параметров универсального типа для текущего экземпляра. (Унаследовано от TypeInfo) |
GUID |
Не поддерживается для неполных параметров универсального типа. |
HasElementType |
Возвращает значение, позволяющее определить, содержит ли текущий объект Type в себе другой тип или ссылку на другой тип (иными словами, является ли текущий объект Type массивом, указателем либо параметром или же он передается по ссылке). (Унаследовано от Type) |
HasElementType |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
ImplementedInterfaces |
Возвращает коллекцию интерфейсов, реализованных текущим типом. (Унаследовано от TypeInfo) |
IsAbstract |
Возвращает значение, показывающее, является ли данный объект Type абстрактным объектом, который должен быть переопределен. (Унаследовано от Type) |
IsAbstract |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsAnsiClass |
Возвращает значение, позволяющее определить, выбран ли для объекта |
IsAnsiClass |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsArray |
Возвращает значение, показывающее, является ли тип массивом. (Унаследовано от Type) |
IsArray |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsAutoClass |
Возвращает значение, позволяющее определить, выбран ли для объекта |
IsAutoClass |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsAutoLayout |
Получает значение, указывающее, выкладываются ли поля текущего типа автоматически средой CLR. (Унаследовано от Type) |
IsAutoLayout |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsByRef |
Возвращает значение, указывающее, передан ли объект Type по ссылке. (Унаследовано от Type) |
IsByRef |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsByRefLike |
Возвращает значение, показывающее, является ли тип структурой, подобной ByRef. |
IsByRefLike |
Возвращает значение, показывающее, является ли тип структурой, подобной ByRef. (Унаследовано от Type) |
IsClass |
Получает значение, позволяющее определить, является объект Type классом или делегатом (иными словами, не является типом значения или интерфейсом). (Унаследовано от Type) |
IsClass |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsCollectible |
Получает значение, указывающее, является ли объект MemberInfo частью сборки, содержащейся в забираемом контексте AssemblyLoadContext. (Унаследовано от MemberInfo) |
IsCOMObject |
Возвращает значение, указывающее, является ли объект Type COM-объектом. (Унаследовано от Type) |
IsCOMObject |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsConstructedGenericType |
Возвращает значение, указывающее, представляет ли этот данный объект сконструированный универсальный тип. |
IsConstructedGenericType |
Возвращает значение, указывающее, представляет ли этот данный объект сконструированный универсальный тип. Можно создать экземпляры сконструированного универсального типа. (Унаследовано от Type) |
IsContextful |
Возвращает значение, позволяющее определить, можно ли поместить в контекст объект Type. (Унаследовано от Type) |
IsEnum |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
IsEnum |
Возвращает значение, позволяющее определить, представляет ли текущий объект Type перечисление. (Унаследовано от Type) |
IsEnum |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsExplicitLayout |
Возвращает значение, указывающее, выкладываются ли поля текущего типа с явно заданными смещениями. (Унаследовано от Type) |
IsExplicitLayout |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsFunctionPointer |
Возвращает значение, указывающее, является ли текущий Type указатель функцией. (Унаследовано от Type) |
IsGenericMethodParameter |
Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального метода. (Унаследовано от Type) |
IsGenericParameter |
Получает значение |
IsGenericType |
Возвращает значение |
IsGenericTypeDefinition |
Получает значение |
IsGenericTypeParameter |
Получает значение, позволяющее определить, представляет ли текущий объект Type параметр типа в определении универсального типа. (Унаследовано от Type) |
IsImport |
Возвращает значение, позволяющее определить, есть ли у объекта Type атрибут ComImportAttribute, свидетельствующий о том, что объект был импортирован из библиотеки COM-типов. (Унаследовано от Type) |
IsImport |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsInterface |
Возвращает значение, позволяющее определить, является ли объект Type интерфейсом (иными словами, не является классом или типом значения). (Унаследовано от Type) |
IsInterface |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsLayoutSequential |
Возвращает значение, указывающее, выкладываются ли поля текущего типа последовательно, в том порядке, в котором они были определены, или выдаются в метаданные. (Унаследовано от Type) |
IsLayoutSequential |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsMarshalByRef |
Возвращает значение, указывающее, маршалирован ли объект Type по ссылке. (Унаследовано от Type) |
IsMarshalByRef |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNested |
Возвращает значение, позволяющее определить, представляет ли текущий объект Type тип, определение которого вложено в определение другого типа. (Унаследовано от Type) |
IsNested |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedAssembly |
Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своей сборке. (Унаследовано от Type) |
IsNestedAssembly |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedFamANDAssem |
Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только для классов, принадлежащих одновременно к семейству и сборке этого объекта. (Унаследовано от Type) |
IsNestedFamANDAssem |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedFamily |
Возвращает значение, позволяющее определить, является ли объект Type вложенным и видимым только в своем семействе. (Унаследовано от Type) |
IsNestedFamily |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedFamORAssem |
Возвращает значение, позволяющее определить, является ли данный объект Type вложенным и видимым только для классов, принадлежащих либо к его семейству, либо к его сборке. (Унаследовано от Type) |
IsNestedFamORAssem |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedPrivate |
Возвращает значение, позволяющее определить, является ли объект Type вложенным и объявленным как закрытый. (Унаследовано от Type) |
IsNestedPrivate |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNestedPublic |
Возвращает значение, позволяющее определить, является ли класс вложенным и объявленным как открытый. (Унаследовано от Type) |
IsNestedPublic |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsNotPublic |
Возвращает значение, позволяющее определить, не был ли объект Type объявлен как открытый. (Унаследовано от Type) |
IsNotPublic |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsPointer |
Возвращает значение, указывающее, является ли объект Type указателем. (Унаследовано от Type) |
IsPointer |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsPrimitive |
Возвращает значение, указывающее, является ли Type одним из типов-примитивов. (Унаследовано от Type) |
IsPrimitive |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsPublic |
Возвращает значение, позволяющее определить, был ли объект Type объявлен как открытый. (Унаследовано от Type) |
IsPublic |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsSealed |
Возвращает значение, позволяющее определить, был ли объект Type объявлен как запечатанный. (Унаследовано от Type) |
IsSealed |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsSecurityCritical |
Возвращает значение, которое указывает, является ли текущий тип критически важным для безопасности или защищенным критически важным для безопасности на данном уровне доверия и, следовательно, может ли он выполнять критические операции. (Унаследовано от Type) |
IsSecuritySafeCritical |
Возвращает значение, которое указывает, является ли текущий тип защищенным критически важным для безопасности на текущем уровне доверия и, следовательно, может ли он выполнять критические операции и предоставлять доступ прозрачному коду. (Унаследовано от Type) |
IsSecurityTransparent |
Получает значение, которое указывает, является ли текущий тип прозрачным на текущем уровне доверия и, следовательно, не может выполнять критические операции. (Унаследовано от Type) |
IsSerializable |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
IsSerializable |
Устаревшие..
Возвращает значение, указывающее, является ли объект двоичным Type сериализуемым. (Унаследовано от Type) |
IsSerializable |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsSignatureType |
Возвращает значение, показывающее, является ли тип типом сигнатуры. (Унаследовано от Type) |
IsSpecialName |
Возвращает значение, позволяющее определить, требует ли имя данного объекта специальной обработки. (Унаследовано от Type) |
IsSpecialName |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsSZArray |
Возвращает значение, указывающее, является ли тип типом массива, который может представлять только одномерный массив с нулевой нижней границей. |
IsSZArray |
Возвращает значение, указывающее, является ли тип типом массива, который может представлять только одномерный массив с нулевой нижней границей. (Унаследовано от Type) |
IsTypeDefinition |
Возвращает значение, показывающее, является ли тип определением типа. |
IsTypeDefinition |
Возвращает значение, показывающее, является ли тип определением типа. (Унаследовано от Type) |
IsUnicodeClass |
Возвращает значение, позволяющее определить, выбран ли для объекта |
IsUnicodeClass |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsUnmanagedFunctionPointer |
Возвращает значение, указывающее, является ли текущий Type указатель неуправляемой функции. (Унаследовано от Type) |
IsValueType |
Возвращает значение, позволяющее определить, является ли объект Type типом значения. (Унаследовано от Type) |
IsValueType |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsVariableBoundArray |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
IsVariableBoundArray |
Возвращает значение, указывающее, является ли тип типом массива, который может представлять многомерный массив или массив с произвольной нижней границей. (Унаследовано от Type) |
IsVisible |
Возвращает значение, позволяющее определить, можно ли получить доступ к объекту Type из кода за пределами сборки. (Унаследовано от Type) |
IsVisible |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
MemberType |
Возвращает значение MemberTypes, позволяющее определить, каким типом является этот член: обычным или вложенным. (Унаследовано от Type) |
MemberType |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
MetadataToken |
Получает токен, который определяет текущий динамический модуль в метаданных. |
MetadataToken |
Получает значение, определяющее элемент метаданных. (Унаследовано от MemberInfo) |
Module |
Возвращает динамический модуль, содержащий параметр универсального типа. |
Name |
Возвращает имя универсального параметра типа. |
Namespace |
Получает значение |
ReflectedType |
Получает объект Type, который использовался для получения GenericTypeParameterBuilder. |
ReflectedType |
Получает объект класса, который использовался для извлечения данного экземпляра объекта |
StructLayoutAttribute |
Возвращает атрибут StructLayoutAttribute, описывающий структуру текущего типа. (Унаследовано от Type) |
StructLayoutAttribute |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
TypeHandle |
Не поддерживается для неполных параметров универсального типа. |
TypeInitializer |
Возвращает инициализатор типа. (Унаследовано от Type) |
TypeInitializer |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
UnderlyingSystemType |
Возвращает текущий параметр универсального типа. |
UnderlyingSystemType |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
Методы
AsType() |
Возвращает текущий тип в виде объекта Type. (Унаследовано от TypeInfo) |
Equals(Object) |
Проверяет, является ли указанный объект экземпляром |
Equals(Type) |
Позволяет определить, совпадает ли базовый системный тип текущего объекта Type с базовым системным типом указанного объекта Type. (Унаследовано от Type) |
FindInterfaces(TypeFilter, Object) |
Возвращает массив объектов Type, представляющий отфильтрованный список интерфейсов, реализованных или наследуемых текущим объектом Type. (Унаследовано от Type) |
FindInterfaces(TypeFilter, Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) |
Возвращает отфильтрованный массив объектов MemberInfo, тип которого совпадает с указанным типом члена. (Унаследовано от Type) |
FindMembers(MemberTypes, BindingFlags, MemberFilter, Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetArrayRank() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetArrayRank() |
Возвращает размерность массива. (Унаследовано от Type) |
GetArrayRank() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetAttributeFlagsImpl() |
При переопределении в производном классе реализует свойство Attributes и возвращает побитовое сочетание значений перечисления, указывающих атрибуты, связанные с Type. |
GetAttributeFlagsImpl() |
При переопределении в производном классе реализует свойство Attributes и возвращает побитовое сочетание значений перечисления, указывающих атрибуты, связанные с Type. (Унаследовано от Type) |
GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Выполняет поиск конструктора с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений по привязке и соглашений о вызовах. (Унаследовано от Type) |
GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[]) |
Выполняет поиск конструктора, параметры которого соответствуют указанным типам аргументов и модификаторам, используя заданные ограничения привязки. (Унаследовано от Type) |
GetConstructor(BindingFlags, Type[]) |
Выполняет поиск конструктора, параметры которого соответствуют заданным типам аргументов, используя указанные ограничения привязки. (Унаследовано от Type) |
GetConstructor(Type[]) |
Выполняет поиск открытого конструктора экземпляра, параметры которого соответствуют типам, содержащимся в указанном массиве. (Унаследовано от Type) |
GetConstructor(Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Не поддерживается для неполных параметров универсального типа. |
GetConstructorImpl(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
При переопределении в производном классе ищет конструктор, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах. (Унаследовано от Type) |
GetConstructors() |
Возвращает все открытые конструкторы, определенные для текущего объекта Type. (Унаследовано от Type) |
GetConstructors() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetConstructors(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetConstructors(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetCustomAttributes(Boolean) |
Не поддерживается для неполных параметров универсального типа. |
GetCustomAttributes(Boolean) |
При переопределении в производном классе возвращает массив всех настраиваемых атрибутов, примененных к данному члену. (Унаследовано от MemberInfo) |
GetCustomAttributes(Type, Boolean) |
Не поддерживается для неполных параметров универсального типа. |
GetCustomAttributes(Type, Boolean) |
При переопределении в производном классе возвращает массив настраиваемых атрибутов, применяемых к этому элементу и определяемых параметром Type. (Унаследовано от MemberInfo) |
GetCustomAttributesData() |
Возвращает список объектов CustomAttributeData, представляющих данные об атрибутах, примененных к целевому элементу. (Унаследовано от MemberInfo) |
GetDeclaredEvent(String) |
Возвращает объект , представляющий указанное событие, объявленное текущим типом. (Унаследовано от TypeInfo) |
GetDeclaredField(String) |
Возвращает объект , представляющий указанное поле, объявленное текущим типом. (Унаследовано от TypeInfo) |
GetDeclaredMethod(String) |
Возвращает объект , представляющий указанный метод, объявленный текущим типом. (Унаследовано от TypeInfo) |
GetDeclaredMethods(String) |
Возвращает коллекцию, содержащую все методы, объявленные в текущем типе, соответствующие указанному имени. (Унаследовано от TypeInfo) |
GetDeclaredNestedType(String) |
Возвращает объект , представляющий указанный вложенный тип, объявленный текущим типом. (Унаследовано от TypeInfo) |
GetDeclaredProperty(String) |
Возвращает объект , представляющий указанное свойство, объявленное текущим типом. (Унаследовано от TypeInfo) |
GetDefaultMembers() |
Выполняет поиск членов, определенных для текущего объекта Type, для которого задан атрибут DefaultMemberAttribute. (Унаследовано от Type) |
GetDefaultMembers() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetElementType() |
Во всех случаях вызывает исключение NotSupportedException. |
GetEnumName(Object) |
Возвращает имя константы с заданным значением для текущего типа перечисления. (Унаследовано от Type) |
GetEnumName(Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEnumNames() |
Возвращает имена членов текущего типа перечисления. (Унаследовано от Type) |
GetEnumNames() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEnumUnderlyingType() |
Возвращает базовый тип текущего типа перечисления. (Унаследовано от Type) |
GetEnumUnderlyingType() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEnumValues() |
Возвращает массив значений констант в текущем типе перечисления. (Унаследовано от Type) |
GetEnumValues() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEnumValuesAsUnderlyingType() |
Извлекает массив значений базовых констант этого типа перечисления. (Унаследовано от Type) |
GetEvent(String) |
Возвращает объект EventInfo, представляющий указанное открытое событие. (Унаследовано от Type) |
GetEvent(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEvent(String, BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetEvent(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEvents() |
Не поддерживается для неполных параметров универсального типа. |
GetEvents() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetEvents(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetEvents(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetField(String) |
Выполняет поиск открытого поля с заданным именем. (Унаследовано от Type) |
GetField(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetField(String, BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetField(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetFields() |
Возвращает все открытые поля текущего объекта Type. (Унаследовано от Type) |
GetFields() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetFields(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetFields(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetFunctionPointerCallingConventions() |
При переопределении в производном классе возвращает соглашения о вызовах текущего указателя Typeфункции . (Унаследовано от Type) |
GetFunctionPointerParameterTypes() |
При переопределении в производном классе возвращает типы параметров текущего указателя Typeфункции . (Унаследовано от Type) |
GetFunctionPointerReturnType() |
При переопределении в производном классе возвращает тип возвращаемого значения текущего указателя Typeфункции . (Унаследовано от Type) |
GetGenericArguments() |
Не допустимо для параметров универсального типа. |
GetGenericArguments() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetGenericParameterConstraints() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetGenericParameterConstraints() |
Возвращает массив объектов Type, которые представляют ограничения, накладываемые на параметр текущего универсального типа. (Унаследовано от Type) |
GetGenericParameterConstraints() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetGenericTypeDefinition() |
Не допустимо для параметров универсального типа. |
GetHashCode() |
Возвращает хэш-код в виде 32-разрядного целого числа для текущего экземпляра. |
GetInterface(String) |
Выполняет поиск интерфейса с заданным именем. (Унаследовано от Type) |
GetInterface(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetInterface(String, Boolean) |
Не поддерживается для неполных параметров универсального типа. |
GetInterface(String, Boolean) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetInterfaceMap(Type) |
Не поддерживается для неполных параметров универсального типа. |
GetInterfaces() |
Не поддерживается для неполных параметров универсального типа. |
GetInterfaces() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMember(String) |
Выполняет поиск открытого члена с заданным именем. (Унаследовано от Type) |
GetMember(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMember(String, BindingFlags) |
Выполняет поиск указанных членов, используя заданные ограничения привязки. (Унаследовано от Type) |
GetMember(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMember(String, MemberTypes, BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetMember(String, MemberTypes, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMembers() |
Возвращает все открытые члены текущего объекта Type. (Унаследовано от Type) |
GetMembers() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMembers(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetMembers(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMemberWithSameMetadataDefinitionAs(MemberInfo) |
Выполняет поиск по MemberInfo текущему Type объекту , соответствующему указанному MemberInfoобъекту . (Унаследовано от Type) |
GetMethod(String) |
Выполняет поиск открытого метода с заданным именем. (Унаследовано от Type) |
GetMethod(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMethod(String, BindingFlags) |
Выполняет поиск указанного метода, используя заданные ограничения привязки. (Унаследовано от Type) |
GetMethod(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Ищет метод с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах. (Унаследовано от Type) |
GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[]) |
Ищет заданный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя установленные ограничения привязки. (Унаследовано от Type) |
GetMethod(String, BindingFlags, Type[]) |
Выполняет поиск указанного метода, параметры которого соответствуют заданным типам аргументов, используя указанные ограничения привязки. (Унаследовано от Type) |
GetMethod(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Ищет метод с параметрами, соответствующими указанному числу универсальных параметров, модификаторам и типам аргументов, с учетом заданных ограничений привязки и соглашений о вызовах. (Унаследовано от Type) |
GetMethod(String, Int32, BindingFlags, Binder, Type[], ParameterModifier[]) |
Ищет заданный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя установленные ограничения привязки. (Унаследовано от Type) |
GetMethod(String, Int32, BindingFlags, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от Type) |
GetMethod(String, Int32, Type[]) |
Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров и типам аргументов. (Унаследовано от Type) |
GetMethod(String, Int32, Type[], ParameterModifier[]) |
Выполняет поиск указанного открытого метода, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам. (Унаследовано от Type) |
GetMethod(String, Type[]) |
Ищет указанный открытый метод, параметры которого соответствуют заданным типам аргументов. (Унаследовано от Type) |
GetMethod(String, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMethod(String, Type[], ParameterModifier[]) |
Выполняет поиск указанного открытого метода, параметры которого соответствуют указанным типам аргументов и модификаторам. (Унаследовано от Type) |
GetMethod(String, Type[], ParameterModifier[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
Не поддерживается для неполных параметров универсального типа. |
GetMethodImpl(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанным типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах. (Унаследовано от Type) |
GetMethodImpl(String, Int32, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) |
При переопределении в производном классе ищет указанный метод, параметры которого соответствуют указанному числу универсальных параметров, типам аргументов и модификаторам, используя для этого заданные ограничения привязки и соглашение о вызовах. (Унаследовано от Type) |
GetMethods() |
Возвращает все открытые методы текущего объекта Type. (Унаследовано от Type) |
GetMethods() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetMethods(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetMethods(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetNestedType(String) |
Выполняет поиск открытого вложенного типа с заданным именем. (Унаследовано от Type) |
GetNestedType(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetNestedType(String, BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetNestedType(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetNestedTypes() |
Возвращает открытые типы, вложенные в текущий объект Type. (Унаследовано от Type) |
GetNestedTypes() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetNestedTypes(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetNestedTypes(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetOptionalCustomModifiers() |
При переопределении в производном классе возвращает необязательные настраиваемые модификаторы текущего Typeобъекта . (Унаследовано от Type) |
GetProperties() |
Возвращает все открытые свойства текущего объекта Type. (Унаследовано от Type) |
GetProperties() |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperties(BindingFlags) |
Не поддерживается для неполных параметров универсального типа. |
GetProperties(BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String) |
Выполняет поиск открытого свойства с заданным именем. (Унаследовано от Type) |
GetProperty(String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String, BindingFlags) |
Ищет указанное свойство, используя заданные ограничения привязки. (Унаследовано от Type) |
GetProperty(String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) |
Ищет свойство с параметрами, соответствующими указанным модификаторам и типам аргументов, с учетом заданных ограничений привязки. (Унаследовано от Type) |
GetProperty(String, Type) |
Выполняет поиск открытого свойства с заданным именем и типом возвращаемого значения. (Унаследовано от Type) |
GetProperty(String, Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String, Type, Type[]) |
Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов. (Унаследовано от Type) |
GetProperty(String, Type, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String, Type, Type[], ParameterModifier[]) |
Ищет заданное открытое свойство, параметры которого соответствуют указанным типам аргументов и модификаторам. (Унаследовано от Type) |
GetProperty(String, Type, Type[], ParameterModifier[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetProperty(String, Type[]) |
Ищет указанное открытое свойство, параметры которого соответствуют указанным типам аргументов. (Унаследовано от Type) |
GetProperty(String, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) |
Не поддерживается для неполных параметров универсального типа. |
GetPropertyImpl(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) |
При переопределении в производном классе выполняет поиск заданного свойства, параметры которого соответствуют типам и модификаторам заданных аргументов, с использованием заданных ограничений привязки. (Унаследовано от Type) |
GetRequiredCustomModifiers() |
При переопределении в производном классе возвращает необходимые настраиваемые модификаторы текущего Typeобъекта . (Унаследовано от Type) |
GetType() |
Возвращает текущий Type. (Унаследовано от Type) |
GetType() |
Выявляет атрибуты элемента и обеспечивает доступ к его метаданным. (Унаследовано от MemberInfo) |
GetTypeCodeImpl() |
Возвращает код базового типа этого экземпляра Type. (Унаследовано от Type) |
HasElementTypeImpl() |
При переопределении в производном классе реализует свойство HasElementType и определяет, что содержится в текущем объекте Type: непосредственно другой тип или же указывающая на него ссылка (иными словами, является ли текущий объект Type массивом, указателем или параметром или же он передается по ссылке). |
HasElementTypeImpl() |
При переопределении в производном классе реализует свойство HasElementType и определяет, что содержится в текущем объекте Type: непосредственно другой тип или же указывающая на него ссылка (иными словами, является ли текущий объект Type массивом, указателем или параметром или же он передается по ссылке). (Унаследовано от Type) |
HasSameMetadataDefinitionAs(MemberInfo) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от MemberInfo) |
InvokeMember(String, BindingFlags, Binder, Object, Object[]) |
Вызывает указанный член, соответствующий заданным ограничениям привязки и указанному списку аргументов. (Унаследовано от Type) |
InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) |
Вызывает указанный член, соответствующий заданным ограничениям привязки, списку аргументов, а также языку и региональным параметрам. (Унаследовано от Type) |
InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) |
Не поддерживается для неполных параметров универсального типа. |
IsArrayImpl() |
При переопределении в производном классе реализует свойство IsArray и определяет, является ли данный объект Type массивом. |
IsArrayImpl() |
При переопределении в производном классе реализует свойство IsArray и определяет, является ли данный объект Type массивом. (Унаследовано от Type) |
IsAssignableFrom(Type) |
Вызывает исключение NotSupportedException во всех случаях. |
IsAssignableFrom(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsAssignableFrom(TypeInfo) |
Вызывает исключение NotSupportedException во всех случаях. |
IsAssignableTo(Type) |
Определяет, можно ли назначить текущий тип переменной указанного типа |
IsByRefImpl() |
При переопределении в производном классе реализует свойство IsByRef и определяет, передается ли данный объект Type по ссылке. |
IsByRefImpl() |
При переопределении в производном классе реализует свойство IsByRef и определяет, передается ли данный объект Type по ссылке. (Унаследовано от Type) |
IsCOMObjectImpl() |
При переопределении в производном классе реализует свойство IsCOMObject и определяет, является ли объект Type COM-объектом. |
IsCOMObjectImpl() |
При переопределении в производном классе реализует свойство IsCOMObject и определяет, является ли объект Type COM-объектом. (Унаследовано от Type) |
IsContextfulImpl() |
Реализует свойство IsContextful и определяет, можно ли поместить в контекст данный объект Type. (Унаследовано от Type) |
IsDefined(Type, Boolean) |
Не поддерживается для неполных параметров универсального типа. |
IsDefined(Type, Boolean) |
При переопределении в производном классе указывает, применяются ли для этого члена один или несколько атрибутов заданного типа или его производных типов. (Унаследовано от MemberInfo) |
IsEnumDefined(Object) |
Возвращает значение, показывающее, имеется ли в текущем типе перечисления указанное значение. (Унаследовано от Type) |
IsEnumDefined(Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsEquivalentTo(Type) |
Определяет, имеют ли два типа модели COM одинаковые удостоверения и могут ли они считаться эквивалентными. (Унаследовано от Type) |
IsEquivalentTo(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsInstanceOfType(Object) |
Определяет, является ли указанный объект экземпляром текущего типа Type. (Унаследовано от Type) |
IsInstanceOfType(Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. (Унаследовано от TypeInfo) |
IsMarshalByRefImpl() |
Реализует свойство IsMarshalByRef и определяет, маршалируется ли объект Type по ссылке. (Унаследовано от Type) |
IsPointerImpl() |
При переопределении в производном классе реализует свойство IsPointer и определяет, является ли объект Type указателем. |
IsPointerImpl() |
При переопределении в производном классе реализует свойство IsPointer и определяет, является ли объект Type указателем. (Унаследовано от Type) |
IsPrimitiveImpl() |
При переопределении в производном классе реализует свойство IsPrimitive и определяет, является ли объект Type одним из типов-примитивов. |
IsPrimitiveImpl() |
При переопределении в производном классе реализует свойство IsPrimitive и определяет, является ли объект Type одним из типов-примитивов. (Унаследовано от Type) |
IsSubclassOf(Type) |
Не поддерживается для неполных параметров универсального типа. |
IsValueTypeImpl() |
Реализует свойство IsValueType и определяет, является ли объект Type типом значения (иными словами, не является классом или интерфейсом). |
IsValueTypeImpl() |
Реализует свойство IsValueType и определяет, является ли объект Type типом значения (иными словами, не является классом или интерфейсом). (Унаследовано от Type) |
MakeArrayType() |
Возвращает тип одномерного массива, тип элементов которого является параметром универсального типа. |
MakeArrayType(Int32) |
Возвращает тип массива, тип элементов которого является параметром универсального типа с указанным количеством измерений. |
MakeByRefType() |
Возвращает объект Type, который представляет текущий параметр универсального типа, когда выполняется передача в качестве параметра ссылки. |
MakeGenericType(Type[]) |
Недопустимо для неполных параметров универсального типа. |
MakePointerType() |
Возвращает объект Type, который представляет указатель на текущий параметр универсального типа. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
SetBaseTypeConstraint(Type) |
Задает базовый тип, который должен наследоваться типом, для подстановки вместо параметра типа. |
SetBaseTypeConstraintCore(Type) |
При переопределении в производном классе задает базовый тип, который должен наследовать тип для замены параметра типа. |
SetCustomAttribute(ConstructorInfo, Byte[]) |
Задает настраиваемый атрибут с помощью большого двоичного объекта пользовательских атрибутов. |
SetCustomAttribute(CustomAttributeBuilder) |
Задает настраиваемый атрибут с помощью построителя настраиваемых атрибутов. |
SetCustomAttributeCore(ConstructorInfo, ReadOnlySpan<Byte>) |
При переопределении в производном классе задает настраиваемый атрибут для этой сборки. |
SetGenericParameterAttributes(GenericParameterAttributes) |
Задает характеристики расхождения и особые ограничения универсального параметра, например ограничение конструктора без параметров. |
SetGenericParameterAttributesCore(GenericParameterAttributes) |
При переопределении в производном классе задает характеристики дисперсии и специальные ограничения универсального параметра, такие как ограничение конструктора без параметров. |
SetInterfaceConstraints(Type[]) |
Задает интерфейсы, которые должны быть реализованы типом для использования вместо параметра типа. |
SetInterfaceConstraintsCore(Type[]) |
При переопределении в производном классе задает интерфейсы, которые должен реализовать тип для замены параметра типа. |
ToString() |
Возвращает строковое представление текущего параметра универсального типа. |
Явные реализации интерфейса
_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от MemberInfo) |
_MemberInfo.GetType() |
Возвращает объект Type, представляющий класс MemberInfo. (Унаследовано от MemberInfo) |
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. (Унаследовано от MemberInfo) |
_MemberInfo.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от MemberInfo) |
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от MemberInfo) |
_Type.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Type) |
_Type.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые затем могут использоваться для получения сведений о типе интерфейса. (Унаследовано от Type) |
_Type.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Type) |
_Type.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Type) |
ICustomAttributeProvider.GetCustomAttributes(Boolean) |
Возвращает массив всех настраиваемых атрибутов, определенных для этого элемента, за исключением именованных атрибутов, или пустой массив, если атрибуты отсутствуют. (Унаследовано от MemberInfo) |
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean) |
Возвращает массив настраиваемых атрибутов, определенных для этого элемента с учетом типа, или пустой массив, если отсутствуют настраиваемые атрибуты определенного типа. (Унаследовано от MemberInfo) |
ICustomAttributeProvider.IsDefined(Type, Boolean) |
Указывает, сколько экземпляров |
IReflectableType.GetTypeInfo() |
Возвращает представление текущего типа объекта TypeInfo. (Унаследовано от TypeInfo) |
Методы расширения
GetCustomAttribute(MemberInfo, Type) |
Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу. |
GetCustomAttribute(MemberInfo, Type, Boolean) |
Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttribute<T>(MemberInfo) |
Извлекает пользовательский атрибут заданного типа, примененный к указанному элементу. |
GetCustomAttribute<T>(MemberInfo, Boolean) |
Извлекает настраиваемый атрибут указанного типа, который применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes(MemberInfo) |
Извлекает коллекцию настраиваемых атрибутов, примененных к указанному члену. |
GetCustomAttributes(MemberInfo, Boolean) |
Извлекает коллекцию пользовательских атрибутов, которые применяются к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes(MemberInfo, Type) |
Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу. |
GetCustomAttributes(MemberInfo, Type, Boolean) |
Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
GetCustomAttributes<T>(MemberInfo) |
Извлекает коллекцию пользовательских атрибутов заданного типа, примененных к указанному элементу. |
GetCustomAttributes<T>(MemberInfo, Boolean) |
Извлекает коллекцию пользовательских атрибутов указанного типа, которые применяется к указанному элементу и, при необходимости, проверяет предков этого элемента. |
IsDefined(MemberInfo, Type) |
Указывает, применены ли какие-либо пользовательские атрибуты заданного типа к указанному члену. |
IsDefined(MemberInfo, Type, Boolean) |
Указывает применены ли настраиваемые атрибуты указанного типа к указанному элементу и, при необходимости, применены ли они к его предкам. |
GetTypeInfo(Type) |
Возвращает представление TypeInfo указанного типа. |
GetMetadataToken(MemberInfo) |
Возвращает маркер метаданных для заданного элемента, если он доступен. |
HasMetadataToken(MemberInfo) |
Возвращает значение, указывающее, доступен ли маркер метаданных для указанного элемента. |
GetRuntimeEvent(Type, String) |
Получает объект, представляющий указанное событие. |
GetRuntimeEvents(Type) |
Извлекает коллекцию, представляющую все события, определенные в указанном типе. |
GetRuntimeField(Type, String) |
Извлекает объект , который представляет указанное поле. |
GetRuntimeFields(Type) |
Извлекает коллекцию, представляющую все поля, определенные в указанном типе. |
GetRuntimeInterfaceMap(TypeInfo, Type) |
Возвращает сопоставление интерфейса для заданного типа и указанного интерфейса. |
GetRuntimeMethod(Type, String, Type[]) |
Извлекает объект, который представляет указанный метод. |
GetRuntimeMethods(Type) |
Извлекает коллекцию, представляющую все методы, определенные в указанном типе. |
GetRuntimeProperties(Type) |
Извлекает коллекцию, представляющую все свойства, определенные в указанном типе. |
GetRuntimeProperty(Type, String) |
Извлекает объект, который представляет указанное свойство. |
GetConstructor(Type, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetConstructors(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetConstructors(Type, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetFields(Type, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetGenericArguments(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetInterfaces(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetMember(Type, String) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetMember(Type, String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetMembers(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetMethods(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetNestedType(Type, String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetProperties(Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetProperties(Type, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetProperty(Type, String, BindingFlags) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetProperty(Type, String, Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
GetProperty(Type, String, Type, Type[]) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
IsAssignableFrom(Type, Type) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |
IsInstanceOfType(Type, Object) |
Определяет и создает параметры универсального типа для динамически определяемых универсальных типов и методов. Этот класс не наследуется. |