Type.GetType Type.GetType Type.GetType Type.GetType Method

Определение

Возвращает объект Type, предоставляющий указанный тип.Gets a Type object that represents the specified type.

Перегрузки

GetType() GetType() GetType() GetType()

Возвращает текущий Type.Gets the current Type.

GetType(String) GetType(String) GetType(String) GetType(String)

Возвращает объект Type с указанным именем, учитывая при поиске регистр.Gets the Type with the specified name, performing a case-sensitive search.

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Возвращает объект Type с заданным именем, выполняя поиск с учетом регистра и указывая, будет ли создаваться исключение в случае невозможности найти тип.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

Возвращает объект Type с указанным именем, позволяющий определить, будет ли создаваться исключение в случае невозможности найти тип и будет ли учитываться регистр при поиске.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Получает тип с указанным именем; дополнительно может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Возвращает тип с заданным именем и указывает, следует ли создавать исключение в случае невозможности найти тип, а также может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Получает тип с заданным именем и указывает, следует ли выполнять поиск без учета регистра и следует ли создавать исключение в случае невозможности найти тип, а также может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType() GetType() GetType() GetType()

Возвращает текущий Type.Gets the current Type.

public:
 virtual Type ^ GetType();
public Type GetType ();
override this.GetType : unit -> Type
Public Function GetType () As Type

Возвраты

Текущий контекст Type.The current Type.

Реализации

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

Дополнительно

GetType(String) GetType(String) GetType(String) GetType(String)

Возвращает объект Type с указанным именем, учитывая при поиске регистр.Gets the Type with the specified name, performing a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Параметры

typeName
String String String String

Имя искомого типа с указанием сборки.The assembly-qualified name of the type to get. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName. Если тип находится в выполняемой в данный момент сборке или библиотеке Mscorlib.dll, достаточно предоставить имя типа с указанием пространства имен.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

Возвраты

Тип с указанным именем, если он существует; в противном случае — значение null.The type with the specified name, if found; otherwise, null.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName представляет массив TypedReference.typeName represents an array of TypedReference.

Вместо этого в .NET для приложений Магазина Windows или в переносимой библиотеке классов перехватите исключение базового класса IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- В текущий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка была скомпилирована в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Примеры

В следующем примере извлекается тип System.Int32 и используется для отображения этого объекта FullName свойство System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Комментарии

Можно использовать GetType метод, чтобы получить Type объекта для типа в другой сборке, если вы знаете его имя с указанием сборки, который можно получить из AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType приводит к загрузке сборки, указанной в typeName.GetType causes loading of the assembly specified in typeName. Вы также можете загрузить сборки с помощью Assembly.Load метод, а затем использовать Assembly.GetType или Assembly.GetTypes метод для получения Type объектов.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Если тип находится в сборке во время компиляции неизвестен в программу, это более эффективно использовать typeof в C# или GetType оператор в Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

Примечание

Если typeName отсутствует, вызов GetType(String) возвращает метод null.If typeName cannot be found, the call to the GetType(String) method returns null. Он не вызывает исключение.It does not throw an exception. Для управления ли исключение, вызовите перегрузку GetType метод, который имеет throwOnError параметра.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetType работает только на сборки, загруженные с диска.GetType only works on assemblies loaded from disk. При вызове метода GetType для поиска типа, определенного в динамическую сборку с использованием System.Reflection.Emit служб, могут быть неверными.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Поведение зависит от того, ли динамическая сборка является постоянным, то есть, созданные с помощью RunAndSave или Save режимов доступа System.Reflection.Emit.AssemblyBuilderAccess перечисления.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Если динамическая сборка сохраняется и будет записана на диск перед GetType — вызывается, загрузчик найдет сохраненную сборку на диске, загружает эту сборку и возвращает тип из этой сборки.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Если сборка не была сохранена на диск, когда GetType вызывается, метод возвращает null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType не поддерживает временные динамические сборки; Таким образом, вызов GetType для извлечения типа во временную динамическую сборку возвращает null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Чтобы использовать GetType для динамического модуля, Подпишитесь на AppDomain.AssemblyResolve событий и вызовов GetType перед сохранением.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. В противном случае вы получите две копии сборки в памяти.Otherwise, you will get two copies of the assembly in memory.

В следующей таблице показаны, какие члены базового класса возвращаются Get методы при отражении типа.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Тип членаMember Type StaticStatic СтатическимNon-Static
КонструкторConstructor НетNo НетNo
ПолеField НетNo Да.Yes. Поле всегда равно по имени и подписи.A field is always hide-by-name-and-signature.
событиеEvent НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
МетодMethod НетNo Да.Yes. Метод (виртуальные и невиртуальные) можно скрыть по имени или по имени и подписи.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Вложенный типNested Type НетNo НетNo
Свойство.Property НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
  1. По имени и подписи считает, что все части сигнатуры, включая настраиваемые модификаторы, возвращают типы, типы параметров, меток и соглашения о неуправляемых вызовах.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Это двоичное сравнение.This is a binary comparison.

  2. Для отражения свойства и события являются по имени и подписи.For reflection, properties and events are hide-by-name-and-signature. Если у вас есть свойство с get и set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу set в базовом классе.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Настраиваемые атрибуты не являются частью система общих типов CTS.Custom attributes are not part of the common type system.

Массивы или COM-типы не производится, если они уже были загружены в таблицу доступных классов.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName может быть имя типа с указанием его пространство имен или имя с указанием сборки, включающий спецификации имени сборки.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName.

Если typeName включает в себя пространство имен, но не имя сборки, этот метод выполняет поиск только в сборке вызывающего объекта и библиотеки Mscorlib.dll, в указанном порядке.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Если полное имя сборки частичного или полного typeName, этот метод выполняет поиск в указанной сборке.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Если сборка имеет строгое имя, полное имя сборки не требуется.If the assembly has a strong name, a complete assembly name is required.

AssemblyQualifiedName Свойство возвращает полное имя, включая вложенные типы, имя сборки и аргументы универсального типа.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. Все компиляторы, которые поддерживают среда CLR будет выдавать простое имя вложенного класса, а отражение создает искаженное имя при запросе, в соответствии со следующими соглашениями.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Примечание

В .NET Framework версии 2.0 архитектура процессора добавляется удостоверения сборки и может быть указан как часть строки имени сборки.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Например «ProcessorArchitecture = msil».For example, "ProcessorArchitecture=msil". Тем не менее, он не включен в строку, возвращаемую AssemblyQualifiedName свойство, по соображениям совместимости.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Можно также загрузить типы, создав AssemblyName объекта и передачи его в соответствующую перегрузку Load метод.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Затем можно использовать Assembly.GetType метод, чтобы загрузить типы из сборки.You can then use the Assembly.GetType method to load types from the assembly. См. также раздел AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

разделительDelimiter ЗначениеMeaning
Обратная косая черта (\)Backslash (\) Escape-символ.Escape character.
Обратный апостроф (')Backtick (`) Предшествует одной или нескольких цифр, представляющее число параметров типа, находится в конце имени универсального типа.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Квадратные скобки ([])Brackets ([]) Заключите список аргументов универсального типа для сконструированного универсального типа; в список аргументов типа заключите типа с указанием сборки.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Запятая ()Comma (,) Предшествует имени сборки.Precedes the Assembly name.
Точка (.)Period (.) Определяет идентификаторы пространства имен.Denotes namespace identifiers.
Знак плюс (+)Plus sign (+) Перед вложенным классом.Precedes a nested class.

Например полное имя класса может выглядеть следующим образом:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Если было TopNamespace.Sub+Namespace, то строка пришлось бы предшествовать знак плюс (+) с escape-символ (\) для предотвращения его обрабатывались как разделитель вложений.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Отражение порождает эту строку следующим образом:Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

Объект «++» становится "\+\+» и"\«становится»\\«.A "++" becomes "\+\+", and a "\" becomes "\\".

Это полное имя можно сохраняются и впоследствии использовать для загрузки Type.This qualified name can be persisted and later used to load the Type. Чтобы найти и загрузить Type, использовать GetType либо с типом имя, либо только имя типа с указанием сборки.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType с типом имя только будет искать Type в сборке вызывающего, а затем в системную сборку.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType в сборке будет искать имя типа с указанием Type в любой сборке.GetType with the assembly qualified type name will look for the Type in any assembly.

Имена типов могут включать конечные символы, определяющие дополнительные сведения о типе, например, является ли тип ссылочным типом, тип указателя или тип массива.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Получить имя типа без этих конечных символов, с помощью t.GetElementType().ToString(), где t — это тип.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Пробелы учитываются во всех компонентах имени типа, за исключением имени сборки.Spaces are relevant in all type name components except the assembly name. В имени сборки пробелы перед разделителем «,» существенны, но пробелы после разделителя «,» игнорируются.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Имя универсального типа заканчивается — обратный апостроф (`) следуют цифры, представляющее число аргументов универсального типа.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Искажение имени предназначена для обеспечения поддержки универсальных типов с одинаковым именем, но с разным числом параметров типа, происходящих в той же области.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Например, отражения возвращает искаженные имена Tuple1andкортежа2 из универсальных методов Tuple(Of T) и Tuple(Of T0, T1) в Visual Basic или Tuple<T> и кортежа\<T0, T1> в Visual C#.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Для универсальных типов заключается в квадратные скобки список аргументов типа и аргументы типа разделяются запятыми.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Например, универсальный Dictionary<TKey,TValue> имеет два параметра типа.For example, a generic Dictionary<TKey,TValue> has two type parameters. Объект Dictionary<TKey,TValue> из MyType с ключами типа String может быть представлен следующим образом:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

Для указания типа с указанием сборки в список аргументов типа, заключите его в квадратных скобках указывается тип с указанием сборки.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. В противном случае запятых, разделяющих частей имени с указанием сборки, интерпретируются как разделители дополнительных аргументов типа.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Например Dictionary<TKey,TValue> из MyType fromMyAssembly.dll с ключами типа String, может быть указан следующим образом:For example, a Dictionary<TKey,TValue> of MyType fromMyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

Примечание

Тип с указанием сборки могут быть заключены в квадратные скобки, только в том случае, когда он появится в списке параметров типа.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Правила поиска сборок для полных и неполных типов в список параметров типа совпадают с правила для полных и неполных неуниверсальных типов.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Обнуляемые типы представляют собой особый случай универсальных типов.Nullable types are a special case of generic types. Например, для типа Int32 представлена строкой «System.Nullable'1[System.Int32]».For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Примечание

В C#, C++ и Visual Basic можно также получить обнуляемые типы, с помощью операторов типов.In C#, C++, and Visual Basic you can also get nullable types using type operators. Например, допускающий значение NULL Boolean возвращаемый тип typeof(Nullable<bool>) в C#, Nullable<Boolean>::typeid в C++, а также по GetType(Nullable(Of Boolean)) в Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

В следующей таблице показаны синтаксис, используемом с GetType для различных типов.The following table shows the syntax you use with GetType for various types.

Чтобы получитьTo Get ИспользоватьUse
Значение необязательной определенности Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Неуправляемый указатель на MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Неуправляемый указатель на указатель на MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Управляемый указатель или ссылка на MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Обратите внимание, что ссылки, в отличие от указателей, ограничены одним уровнем.Note that unlike pointers, references are limited to one level.
Родительский и вложенный классA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Одномерный массив с нижней границей, равной 0A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Одномерный массив с неизвестной нижней границейA one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
N мерный массивAn n-dimensional array Запятая (,) внутри квадратных скобок n-1 раз.A comma (,) inside the brackets a total of n-1 times. Например System.Object[,,] представляет трехмерный массив Object массива.For example, System.Object[,,] represents a three-dimensional Object array.
Массив одномерных массивовAn array of one-dimensional arrays Type.GetType("MyType[][]")
Прямоугольный двухмерный массив с неизвестными нижними границамиA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Универсальный тип с одним аргументом типаA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Универсальный тип с двумя аргументами типаA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Универсальный тип с двумя аргументами типа сборкиA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
С указанием сборки универсального типа с аргументом типа сборкиAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Универсальный тип, тип аргумента является универсальным типом с двумя аргументами типаA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Дополнительно

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Возвращает объект Type с заданным именем, выполняя поиск с учетом регистра и указывая, будет ли создаваться исключение в случае невозможности найти тип.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Параметры

typeName
String String String String

Имя искомого типа с указанием сборки.The assembly-qualified name of the type to get. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName. Если тип находится в выполняемой в данный момент сборке или библиотеке Mscorlib.dll, достаточно предоставить имя типа с указанием пространства имен.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean Boolean Boolean Boolean

Значение true, чтобы создать исключение, если тип не удается найти; значение false, чтобы вернуть значение null.true to throw an exception if the type cannot be found; false to return null. Кроме того, при указании значения false подавляются некоторые другие условия возникновения исключений, но не все из них.Specifying false also suppresses some other exception conditions, but not all of them. См. раздел "Исключения".See the Exceptions section.

Возвраты

Тип с указанным именем.The type with the specified name. Если тип не найден, параметр throwOnError определяет дальнейшее действие — возврат значения null или создание исключения.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. В некоторых случаях исключение создается независимо от значения параметра throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. См. раздел "Исключения".See the Exceptions section.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

throwOnError имеет значение true, и тип не найден.throwOnError is true and the type is not found.

-или--or- throwOnError имеет значение true, и typeName содержит недопустимые знаки, например внедренные табуляции.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -или--or- throwOnError имеет значение true, и typeName является пустой строкой.throwOnError is true and typeName is an empty string.

-или--or- throwOnError имеет значение true, и typeName представляет тип массива с недопустимым размером.throwOnError is true and typeName represents an array type with an invalid size.

-или--or- typeName представляет массив TypedReference.typeName represents an array of TypedReference.

throwOnError имеет значение true, и typeName содержит недопустимый синтаксис.throwOnError is true and typeName contains invalid syntax. Например, "MyType[,*,]".For example, "MyType[,*,]".

-или--or- typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError имеет значение true, и не удалось найти сборку либо одну из ее зависимостей.throwOnError is true and the assembly or one of its dependencies was not found.

Вместо этого в .NET для приложений Магазина Windows или в переносимой библиотеке классов перехватите исключение базового класса IOException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- В текущий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка была скомпилирована в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Примеры

В следующем примере извлекается тип System.Int32 и используется для отображения этого объекта FullName свойство System.Int32.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Если объект типа ссылается на сборку, которая не существует, этот пример создает исключение.If a type object refers to an assembly that does not exist, this example throws an exception.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Комментарии

Можно использовать GetType метод, чтобы получить Type объекта для типа в другой сборке, если вы знаете его имя с указанием сборки, который можно получить из AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType приводит к загрузке сборки, указанной в typeName.GetType causes loading of the assembly specified in typeName. Вы также можете загрузить сборки с помощью Assembly.Load метод, а затем использовать Assembly.GetType или Assembly.GetTypes метод для получения Type объектов.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Если тип находится в сборке во время компиляции неизвестен в программу, это более эффективно использовать typeof в C# или GetType оператор в Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetType работает только на сборки, загруженные с диска.GetType only works on assemblies loaded from disk. При вызове метода GetType для поиска типа, определенного в динамическую сборку с использованием System.Reflection.Emit служб, могут быть неверными.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Поведение зависит от того, ли динамическая сборка является постоянным, то есть, созданные с помощью RunAndSave или Save режимов доступа System.Reflection.Emit.AssemblyBuilderAccess перечисления.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Если динамическая сборка сохраняется и будет записана на диск перед GetType — вызывается, загрузчик найдет сохраненную сборку на диске, загружает эту сборку и возвращает тип из этой сборки.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Если сборка не была сохранена на диск, когда GetType вызывается, метод возвращает null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType не поддерживает временные динамические сборки; Таким образом, вызов GetType для извлечения типа во временную динамическую сборку возвращает null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Чтобы использовать GetType для динамического модуля, Подпишитесь на AppDomain.AssemblyResolve событий и вызовов GetType перед сохранением.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. В противном случае вы получите две копии сборки в памяти.Otherwise, you will get two copies of the assembly in memory.

throwOnError Параметр указывает, что произойдет, если тип не найден, а также подавляются некоторые другие условия исключения, как описано в раздел "исключения".The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Некоторые исключения создаются независимо от значения throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Например, если найден тип, но не может быть загружен TypeLoadException возникает даже в том случае, если throwOnError является false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

В следующей таблице показаны, какие члены базового класса возвращаются Get методы при отражении типа.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Тип членаMember Type StaticStatic СтатическимNon-Static
КонструкторConstructor НетNo НетNo
ПолеField НетNo Да.Yes. Поле всегда равно по имени и подписи.A field is always hide-by-name-and-signature.
событиеEvent НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
МетодMethod НетNo Да.Yes. Метод (виртуальные и невиртуальные) можно скрыть по имени или по имени и подписи.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Вложенный типNested Type НетNo НетNo
Свойство.Property НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
  1. По имени и подписи считает, что все части сигнатуры, включая настраиваемые модификаторы, возвращают типы, типы параметров, меток и соглашения о неуправляемых вызовах.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Это двоичное сравнение.This is a binary comparison.

  2. Для отражения свойства и события являются по имени и подписи.For reflection, properties and events are hide-by-name-and-signature. Если у вас есть свойство с get и set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу set в базовом классе.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Настраиваемые атрибуты не являются частью система общих типов CTS.Custom attributes are not part of the common type system.

Массивы или COM-типы не производится, если они уже были загружены в таблицу доступных классов.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName может быть имя типа с указанием его пространство имен или имя с указанием сборки, включающий спецификации имени сборки.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName.

Если typeName включает в себя пространство имен, но не имя сборки, этот метод выполняет поиск только в сборке вызывающего объекта и библиотеки Mscorlib.dll, в указанном порядке.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Если полное имя сборки частичного или полного typeName, этот метод выполняет поиск в указанной сборке.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Если сборка имеет строгое имя, полное имя сборки не требуется.If the assembly has a strong name, a complete assembly name is required.

AssemblyQualifiedName Свойство возвращает полное имя, включая вложенные типы, имя сборки и универсальных аргументов.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Все компиляторы, которые поддерживают среда CLR будет выдавать простое имя вложенного класса, а отражение создает искаженное имя при запросе, в соответствии со следующими соглашениями.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Примечание

В .NET Framework версии 2.0 архитектура процессора добавляется удостоверения сборки и может быть указан как часть строки имени сборки.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Например «ProcessorArchitecture = msil».For example, "ProcessorArchitecture=msil". Тем не менее, он не включен в строку, возвращаемую AssemblyQualifiedName свойство, по соображениям совместимости.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Можно также загрузить типы, создав AssemblyName объекта и передачи его в соответствующую перегрузку Load метод.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Затем можно использовать Assembly.GetType метод, чтобы загрузить типы из сборки.You can then use the Assembly.GetType method to load types from the assembly. См. также раздел AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

разделительDelimiter ЗначениеMeaning
Обратная косая черта (\)Backslash (\) Escape-символ.Escape character.
Обратный апостроф (')Backtick (`) Предшествует одной или нескольких цифр, представляющее число параметров типа, находится в конце имени универсального типа.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Квадратные скобки ([])Brackets ([]) Заключите список аргументов универсального типа для сконструированного универсального типа; в список аргументов типа заключите типа с указанием сборки.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Запятая ()Comma (,) Предшествует имени сборки.Precedes the Assembly name.
Точка (.)Period (.) Определяет идентификаторы пространства имен.Denotes namespace identifiers.
Знак плюс (+)Plus sign (+) Перед вложенным классом.Precedes a nested class.

Например полное имя класса может выглядеть следующим образом:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Если было TopNamespace.Sub+Namespace, то строка пришлось бы предшествовать знак плюс (+) с escape-символ (\) для предотвращения его обрабатывались как разделитель вложений.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Отражение порождает эту строку следующим образом:Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

Объект «++» становится "\+\+» и"\«становится»\\«.A "++" becomes "\+\+", and a "\" becomes "\\".

Это полное имя можно сохраняются и впоследствии использовать для загрузки Type.This qualified name can be persisted and later used to load the Type. Чтобы найти и загрузить Type, использовать GetType либо с типом имя, либо только имя типа с указанием сборки.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType с типом имя только будет искать Type в сборке вызывающего, а затем в системную сборку.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType в сборке будет искать имя типа с указанием Type в любой сборке.GetType with the assembly qualified type name will look for the Type in any assembly.

Имена типов могут включать конечные символы, определяющие дополнительные сведения о типе, например, является ли тип ссылочным типом, тип указателя или тип массива.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Получить имя типа без этих конечных символов, с помощью t.GetElementType().ToString(), где t — это тип.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Пробелы учитываются во всех компонентах имени типа, за исключением имени сборки.Spaces are relevant in all type name components except the assembly name. В имени сборки пробелы перед разделителем «,» существенны, но пробелы после разделителя «,» игнорируются.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Имя универсального типа заканчивается — обратный апостроф (`) следуют цифры, представляющее число аргументов универсального типа.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Искажение имени предназначена для обеспечения поддержки универсальных типов с одинаковым именем, но с разным числом параметров типа, происходящих в той же области.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Например, отражения возвращает искаженные имена Tuple1andкортежа2 из универсальных методов Tuple(Of T) и Tuple(Of T0, T1) в Visual Basic или Tuple<T> и кортежа\<T0, T1> в Visual C#.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Для универсальных типов заключается в квадратные скобки список аргументов типа и аргументы типа разделяются запятыми.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Например, универсальный Dictionary<TKey,TValue> имеет два параметра типа.For example, a generic Dictionary<TKey,TValue> has two type parameters. Объект Dictionary<TKey,TValue> из MyType с ключами типа String может быть представлен следующим образом:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

Для указания типа с указанием сборки в список аргументов типа, заключите его в квадратных скобках указывается тип с указанием сборки.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. В противном случае запятых, разделяющих частей имени с указанием сборки, интерпретируются как разделители дополнительных аргументов типа.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Например Dictionary<TKey,TValue> из MyType из MyAssembly.dll, с помощью ключей типа String, может быть указан следующим образом:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

Примечание

Тип с указанием сборки могут быть заключены в квадратные скобки, только в том случае, когда он появится в списке параметров типа.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Правила поиска сборок для полных и неполных типов в список параметров типа совпадают с правила для полных и неполных неуниверсальных типов.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Обнуляемые типы представляют собой особый случай универсальных типов.Nullable types are a special case of generic types. Например, для типа Int32 представлена строкой «System.Nullable'1[System.Int32]».For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Примечание

В C#, C++ и Visual Basic можно также получить обнуляемые типы, с помощью операторов типов.In C#, C++, and Visual Basic you can also get nullable types using type operators. Например, допускающий значение NULL Boolean возвращаемый тип typeof(Nullable<bool>) в C#, Nullable<Boolean>::typeid в C++, а также по GetType(Nullable(Of Boolean)) в Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

В следующей таблице показаны синтаксис, используемом с GetType для различных типов.The following table shows the syntax you use with GetType for various types.

Чтобы получитьTo Get ИспользоватьUse
Значение необязательной определенности Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Неуправляемый указатель на MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Неуправляемый указатель на указатель на MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Управляемый указатель или ссылка на MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Обратите внимание, что ссылки, в отличие от указателей, ограничены одним уровнем.Note that unlike pointers, references are limited to one level.
Родительский и вложенный классA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Одномерный массив с нижней границей, равной 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Одномерный массив с неизвестной нижней границейA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
N мерный массивAn n-dimensional array Запятая (,) внутри квадратных скобок n-1 раз.A comma (,) inside the brackets a total of n-1 times. Например System.Object[,,] представляет трехмерный массив Object массива.For example, System.Object[,,] represents a three-dimensional Object array.
Двумерный массив массиваA two-dimensional array's array Type.GetType("MyArray[][]")
Прямоугольный двухмерный массив с неизвестными нижними границамиA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Универсальный тип с одним аргументом типаA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Универсальный тип с двумя аргументами типаA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Универсальный тип с двумя аргументами типа сборкиA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
С указанием сборки универсального типа с аргументом типа сборкиAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Универсальный тип, тип аргумента является универсальным типом с двумя аргументами типаA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Дополнительно

GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

Возвращает объект Type с указанным именем, позволяющий определить, будет ли создаваться исключение в случае невозможности найти тип и будет ли учитываться регистр при поиске.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Параметры

typeName
String String String String

Имя искомого типа с указанием сборки.The assembly-qualified name of the type to get. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName. Если тип находится в выполняемой в данный момент сборке или библиотеке Mscorlib.dll, достаточно предоставить имя типа с указанием пространства имен.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean Boolean Boolean Boolean

Значение true, чтобы создать исключение, если тип не удается найти; значение false, чтобы вернуть значение null.true to throw an exception if the type cannot be found; false to return null. Кроме того, при указании значения false подавляются некоторые другие условия возникновения исключений, но не все из них.Specifying false also suppresses some other exception conditions, but not all of them. См. раздел "Исключения".See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

Значение true, чтобы не учитывать регистр при поиске typeName, значение false, чтобы учитывать регистр при поиске typeName.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Возвраты

Тип с указанным именем.The type with the specified name. Если тип не найден, параметр throwOnError определяет дальнейшее действие — возврат значения null или создание исключения.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. В некоторых случаях исключение создается независимо от значения параметра throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. См. раздел "Исключения".See the Exceptions section.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

throwOnError имеет значение true, и тип не найден.throwOnError is true and the type is not found.

-или--or- throwOnError имеет значение true, и typeName содержит недопустимые знаки, например внедренные табуляции.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -или--or- throwOnError имеет значение true, и typeName является пустой строкой.throwOnError is true and typeName is an empty string.

-или--or- throwOnError имеет значение true, и typeName представляет тип массива с недопустимым размером.throwOnError is true and typeName represents an array type with an invalid size.

-или--or- typeName представляет массив TypedReference.typeName represents an array of TypedReference.

throwOnError имеет значение true, и typeName содержит недопустимый синтаксис.throwOnError is true and typeName contains invalid syntax. Например, "MyType[,*,]".For example, "MyType[,*,]".

-или--or- typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError имеет значение true, и не удалось найти сборку либо одну из ее зависимостей.throwOnError is true and the assembly or one of its dependencies was not found.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- В текущий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка была скомпилирована в более поздней версии.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Комментарии

Можно использовать GetType метод, чтобы получить Type объекта для типа в другой сборке, если вы знаете его имя с указанием сборки, который можно получить из AssemblyQualifiedName.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetType приводит к загрузке сборки, указанной в typeName.GetType causes loading of the assembly specified in typeName. Вы также можете загрузить сборки с помощью Assembly.Load метод, а затем использовать Assembly.GetType или Assembly.GetTypes метод для получения Type объектов.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Если тип находится в сборке во время компиляции неизвестен в программу, это более эффективно использовать typeof в C# или GetType оператор в Visual Basic.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetType работает только на сборки, загруженные с диска.GetType only works on assemblies loaded from disk. При вызове метода GetType для поиска типа, определенного в динамическую сборку с использованием System.Reflection.Emit служб, могут быть неверными.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Поведение зависит от того, ли динамическая сборка является постоянным, то есть, созданные с помощью RunAndSave или Save режимов доступа System.Reflection.Emit.AssemblyBuilderAccess перечисления.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Если динамическая сборка сохраняется и будет записана на диск перед GetType — вызывается, загрузчик найдет сохраненную сборку на диске, загружает эту сборку и возвращает тип из этой сборки.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Если сборка не была сохранена на диск, когда GetType вызывается, метод возвращает null.If the assembly has not been saved to disk when GetType is called, the method returns null. GetType не поддерживает временные динамические сборки; Таким образом, вызов GetType для извлечения типа во временную динамическую сборку возвращает null.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Чтобы использовать GetType для динамического модуля, Подпишитесь на AppDomain.AssemblyResolve событий и вызовов GetType перед сохранением.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. В противном случае вы получите две копии сборки в памяти.Otherwise, you will get two copies of the assembly in memory.

throwOnError Параметр указывает, что произойдет, если тип не найден, а также подавляются некоторые другие условия исключения, как описано в раздел "исключения".The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Некоторые исключения создаются независимо от значения throwOnError.Some exceptions are thrown regardless of the value of throwOnError. Например, если найден тип, но не может быть загружен TypeLoadException возникает даже в том случае, если throwOnError является false.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

В следующей таблице показаны, какие члены базового класса возвращаются Get методы при отражении типа.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Тип членаMember Type StaticStatic СтатическимNon-Static
КонструкторConstructor НетNo НетNo
ПолеField НетNo Да.Yes. Поле всегда равно по имени и подписи.A field is always hide-by-name-and-signature.
событиеEvent НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
МетодMethod НетNo Да.Yes. Метод (виртуальные и невиртуальные) можно скрыть по имени или по имени и подписи.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Вложенный типNested Type НетNo НетNo
Свойство.Property НеприменимоNot applicable Правило системы общих типов является то, что наследование осуществляется так же, как и для методов, реализующих свойство.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Отражении свойства по имени и подписи.Reflection treats properties as hide-by-name-and-signature. См. Примечание 2 ниже.See note 2 below.
  1. По имени и подписи считает, что все части сигнатуры, включая настраиваемые модификаторы, возвращают типы, типы параметров, меток и соглашения о неуправляемых вызовах.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Это двоичное сравнение.This is a binary comparison.

  2. Для отражения свойства и события являются по имени и подписи.For reflection, properties and events are hide-by-name-and-signature. Если у вас есть свойство с get и set в базовом классе, но производный класс имеет только метод доступа get, свойство производного класса скрывает свойство базового класса, и вы не сможете получить доступ к методу set в базовом классе.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Настраиваемые атрибуты не являются частью система общих типов CTS.Custom attributes are not part of the common type system.

Массивы или COM-типы не производится, если они уже были загружены в таблицу доступных классов.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeName может быть имя типа с указанием его пространство имен или имя с указанием сборки, включающий спецификации имени сборки.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. См. раздел AssemblyQualifiedName.See AssemblyQualifiedName.

Если typeName включает в себя пространство имен, но не имя сборки, этот метод выполняет поиск только в сборке вызывающего объекта и библиотеки Mscorlib.dll, в указанном порядке.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Если полное имя сборки частичного или полного typeName, этот метод выполняет поиск в указанной сборке.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Если сборка имеет строгое имя, полное имя сборки не требуется.If the assembly has a strong name, a complete assembly name is required.

AssemblyQualifiedName Свойство возвращает полное имя, включая вложенные типы, имя сборки и аргументы типа.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Все компиляторы, которые поддерживают среда CLR будет выдавать простое имя вложенного класса, а отражение создает искаженное имя при запросе, в соответствии со следующими соглашениями.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Примечание

В .NET Framework версии 2.0 архитектура процессора добавляется удостоверения сборки и может быть указан как часть строки имени сборки.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Например «ProcessorArchitecture = msil».For example, "ProcessorArchitecture=msil". Тем не менее, он не включен в строку, возвращаемую AssemblyQualifiedName свойство, по соображениям совместимости.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Можно также загрузить типы, создав AssemblyName объекта и передачи его в соответствующую перегрузку Load метод.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Затем можно использовать Assembly.GetType метод, чтобы загрузить типы из сборки.You can then use the Assembly.GetType method to load types from the assembly. См. также раздел AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

разделительDelimiter ЗначениеMeaning
Обратная косая черта (\)Backslash (\) Escape-символ.Escape character.
Обратный апостроф (')Backtick (`) Предшествует одной или нескольких цифр, представляющее число параметров типа, находится в конце имени универсального типа.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Квадратные скобки ([])Brackets ([]) Заключите список аргументов универсального типа для сконструированного универсального типа; в список аргументов типа заключите типа с указанием сборки.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Запятая ()Comma (,) Предшествует имени сборки.Precedes the Assembly name.
Точка (.)Period (.) Определяет идентификаторы пространства имен.Denotes namespace identifiers.
Знак плюс (+)Plus sign (+) Перед вложенным классом.Precedes a nested class.

Например полное имя класса может выглядеть следующим образом:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Если было TopNamespace.Sub+Namespace, то строка пришлось бы предшествовать знак плюс (+) с escape-символ (\) для предотвращения его обрабатывались как разделитель вложений.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Отражение порождает эту строку следующим образом:Reflection emits this string as follows:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly  

Объект «++» становится "\+\+» и"\«становится»\\«.A "++" becomes "\+\+", and a "\" becomes "\\".

Это полное имя можно сохраняются и впоследствии использовать для загрузки Type.This qualified name can be persisted and later used to load the Type. Чтобы найти и загрузить Type, использовать GetType либо с типом имя, либо только имя типа с указанием сборки.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetType с типом имя только будет искать Type в сборке вызывающего, а затем в системную сборку.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetType в сборке будет искать имя типа с указанием Type в любой сборке.GetType with the assembly qualified type name will look for the Type in any assembly.

Имена типов могут включать конечные символы, определяющие дополнительные сведения о типе, например, является ли тип ссылочным типом, тип указателя или тип массива.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Получить имя типа без этих конечных символов, с помощью t.GetElementType().ToString(), где t — это тип.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Пробелы учитываются во всех компонентах имени типа, за исключением имени сборки.Spaces are relevant in all type name components except the assembly name. В имени сборки пробелы перед разделителем «,» существенны, но пробелы после разделителя «,» игнорируются.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Имя универсального типа заканчивается — обратный апостроф (`) следуют цифры, представляющее число аргументов универсального типа.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Искажение имени предназначена для обеспечения поддержки универсальных типов с одинаковым именем, но с разным числом параметров типа, происходящих в той же области.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Например, отражения возвращает искаженные имена Tuple1andкортежа2 из универсальных методов Tuple(Of T) и Tuple(Of T0, T1) в Visual Basic или Tuple<T> и кортежа\<T0, T1> в Visual C#.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Для универсальных типов заключается в квадратные скобки список аргументов типа и аргументы типа разделяются запятыми.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Например, универсальный Dictionary<TKey,TValue> имеет два параметра типа.For example, a generic Dictionary<TKey,TValue> has two type parameters. Объект Dictionary<TKey,TValue> из MyType с ключами типа String может быть представлен следующим образом:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

System.Collections.Generic.Dictionary`2[System.String,MyType]  

Для указания типа с указанием сборки в список аргументов типа, заключите его в квадратных скобках указывается тип с указанием сборки.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. В противном случае запятых, разделяющих частей имени с указанием сборки, интерпретируются как разделители дополнительных аргументов типа.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Например Dictionary<TKey,TValue> из MyType из MyAssembly.dll, с помощью ключей типа String, может быть указан следующим образом:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")  

Примечание

Тип с указанием сборки могут быть заключены в квадратные скобки, только в том случае, когда он появится в списке параметров типа.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Правила поиска сборок для полных и неполных типов в список параметров типа совпадают с правила для полных и неполных неуниверсальных типов.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Обнуляемые типы представляют собой особый случай универсальных типов.Nullable types are a special case of generic types. Например, для типа Int32 представлена строкой «System.Nullable'1[System.Int32]».For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Примечание

В C#, C++ и Visual Basic можно также получить обнуляемые типы, с помощью операторов типов.In C#, C++, and Visual Basic you can also get nullable types using type operators. Например, допускающий значение NULL Boolean возвращаемый тип typeof(Nullable<bool>) в C#, Nullable<Boolean>::typeid в C++, а также по GetType(Nullable(Of Boolean)) в Visual Basic.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

В следующей таблице показаны синтаксис, используемом с GetType для различных типов.The following table shows the syntax you use with GetType for various types.

Чтобы получитьTo Get ИспользоватьUse
Значение необязательной определенности Int32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Неуправляемый указатель на MyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Неуправляемый указатель на указатель на MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Управляемый указатель или ссылка на MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Обратите внимание, что ссылки, в отличие от указателей, ограничены одним уровнем.Note that unlike pointers, references are limited to one level.
Родительский и вложенный классA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Одномерный массив с нижней границей, равной 0A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Одномерный массив с неизвестной нижней границейA one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
N мерный массивAn n-dimensional array Запятая (,) внутри квадратных скобок n-1 раз.A comma (,) inside the brackets a total of n-1 times. Например System.Object[,,] представляет трехмерный массив Object массива.For example, System.Object[,,] represents a three-dimensional Object array.
Двумерный массив массиваA two-dimensional array's array Type.GetType("MyArray[][]")
Прямоугольный двухмерный массив с неизвестными нижними границамиA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Универсальный тип с одним аргументом типаA generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Универсальный тип с двумя аргументами типаA generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Универсальный тип с двумя аргументами типа сборкиA generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
С указанием сборки универсального типа с аргументом типа сборкиAn assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Универсальный тип, тип аргумента является универсальным типом с двумя аргументами типаA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Дополнительно

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Получает тип с указанным именем; дополнительно может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

Параметры

typeName
String String String String

Имя получаемого типа.The name of the type to get. Если задан параметр typeResolver, имя типа может быть любой строкой, которую может разрешить объект typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Если задан параметр assemblyResolver или если используется стандартное разрешение типов, параметр typeName должен быть именем с указанием сборки (см. описание свойства AssemblyQualifiedName), кроме случаев, когда этот тип находится в текущей выполняемой сборке или в библиотеке Mscorlib.dll — тогда достаточно задать имя типа с указанием пространства имен.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Метод, находящий и возвращающий сборку, заданную в параметре typeName.A method that locates and returns the assembly that is specified in typeName. Имя сборки передается методу assemblyResolver в виде объекта AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Если объект typeName не содержит имя сборки, метод assemblyResolver не вызывается.If typeName does not contain the name of an assembly, assemblyResolver is not called. Если метод assemblyResolver не указан, выполняется стандартное разрешение сборки.If assemblyResolver is not supplied, standard assembly resolution is performed.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers. В противном случае возможно повышение привилегий для вредоносного кода.Doing so could result in elevation of privilege for malicious code. Рекомендуется использовать только методы, предоставленные пользователями или знакомые им.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Метод, находящий и возвращающий тип, заданный в параметре typeName, из сборки, возвращенной методом assemblyResolver или стандартным методом разрешения сборки.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Если сборка не предоставлена, ее может предоставить метод typeResolver.If no assembly is provided, the typeResolver method can provide one. Метод также принимает параметр, указывающий, следует ли выполнять поиск без учета регистра; этому параметру передается значение false.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers.

Возвраты

Тип с указанным именем или значение null, если тип не найден.The type with the specified name, or null if the type is not found.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

Произошла ошибка при интерпретации typeName в имя типа и имя сборки (например, если имя простого типа содержит неэкранированный специальный знак).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-или--or- typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName представляет массив TypedReference.typeName represents an array of TypedReference.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

-или--or- typeName содержит недопустимое имя сборки.typeName contains an invalid assembly name.

-или--or- typeName является допустимым именем сборки без имени типа.typeName is a valid assembly name without a type name.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- Сборка была скомпилирована в более поздней версии среды CLR, чем версия, загруженная в текущий момент.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Комментарии

Сценарии использования для этого метода и сведения о assemblyResolver и typeResolver параметров можно найти в GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) перегрузки метода.Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

Примечание

Если typeName отсутствует, вызов GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) возвращает метод null.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. Он не вызывает исключение.It does not throw an exception. Для управления ли исключение, вызовите перегрузку GetType метод, который имеет throwOnError параметра.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

Вызов перегрузки этого метода равносилен вызову метода является GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) перегрузку метода с указанием false для throwOnError и ignoreCase параметров.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the throwOnError and ignoreCase parameters.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Возвращает тип с заданным именем и указывает, следует ли создавать исключение в случае невозможности найти тип, а также может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

Параметры

typeName
String String String String

Имя получаемого типа.The name of the type to get. Если задан параметр typeResolver, имя типа может быть любой строкой, которую может разрешить объект typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Если задан параметр assemblyResolver или если используется стандартное разрешение типов, параметр typeName должен быть именем с указанием сборки (см. описание свойства AssemblyQualifiedName), кроме случаев, когда этот тип находится в текущей выполняемой сборке или в библиотеке Mscorlib.dll — тогда достаточно задать имя типа с указанием пространства имен.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Метод, находящий и возвращающий сборку, заданную в параметре typeName.A method that locates and returns the assembly that is specified in typeName. Имя сборки передается методу assemblyResolver в виде объекта AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Если объект typeName не содержит имя сборки, метод assemblyResolver не вызывается.If typeName does not contain the name of an assembly, assemblyResolver is not called. Если метод assemblyResolver не указан, выполняется стандартное разрешение сборки.If assemblyResolver is not supplied, standard assembly resolution is performed.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers. В противном случае возможно повышение привилегий для вредоносного кода.Doing so could result in elevation of privilege for malicious code. Рекомендуется использовать только методы, предоставленные пользователями или знакомые им.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Метод, находящий и возвращающий тип, заданный в параметре typeName, из сборки, возвращенной методом assemblyResolver или стандартным методом разрешения сборки.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Если сборка не предоставлена, этот метод может предоставить ее.If no assembly is provided, the method can provide one. Метод также принимает параметр, указывающий, следует ли выполнять поиск без учета регистра; этому параметру передается значение false.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

Значение true, чтобы создать исключение, если тип не удается найти; значение false, чтобы вернуть значение null.true to throw an exception if the type cannot be found; false to return null. Кроме того, при указании значения false подавляются некоторые другие условия возникновения исключений, но не все из них.Specifying false also suppresses some other exception conditions, but not all of them. См. раздел "Исключения".See the Exceptions section.

Возвраты

Тип с указанным именем.The type with the specified name. Если тип не найден, параметр throwOnError определяет дальнейшее действие — возврат значения null или создание исключения.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. В некоторых случаях исключение создается независимо от значения параметра throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. См. раздел "Исключения".See the Exceptions section.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

throwOnError имеет значение true, и тип не найден.throwOnError is true and the type is not found.

-или--or- throwOnError имеет значение true, и typeName содержит недопустимые знаки, например внедренные табуляции.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -или--or- throwOnError имеет значение true, и typeName является пустой строкой.throwOnError is true and typeName is an empty string.

-или--or- throwOnError имеет значение true, и typeName представляет тип массива с недопустимым размером.throwOnError is true and typeName represents an array type with an invalid size.

-или--or- typeName представляет массив TypedReference.typeName represents an array of TypedReference.

Произошла ошибка при интерпретации typeName в имя типа и имя сборки (например, если имя простого типа содержит неэкранированный специальный знак).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-или--or- throwOnError имеет значение true, и typeName содержит недопустимый синтаксис (например "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-или--or- typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError имеет значение true, и не удалось найти сборку либо одну из ее зависимостей.throwOnError is true and the assembly or one of its dependencies was not found.

-или--or- typeName содержит недопустимое имя сборки.typeName contains an invalid assembly name.

-или--or- typeName является допустимым именем сборки без имени типа.typeName is a valid assembly name without a type name.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- Сборка была скомпилирована в более поздней версии среды CLR, чем версия, загруженная в текущий момент.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Комментарии

Сценарии использования для этого метода и сведения о assemblyResolver и typeResolver параметров можно найти в GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) перегрузки метода.Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

Вызов перегрузки этого метода равносилен вызову метода является GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) перегрузку метода с указанием false для ignoreCase параметра.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the ignoreCase parameter.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Получает тип с заданным именем и указывает, следует ли выполнять поиск без учета регистра и следует ли создавать исключение в случае невозможности найти тип, а также может предоставлять настраиваемые методы для разрешения сборки и типа.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

Параметры

typeName
String String String String

Имя получаемого типа.The name of the type to get. Если задан параметр typeResolver, имя типа может быть любой строкой, которую может разрешить объект typeResolver.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Если задан параметр assemblyResolver или если используется стандартное разрешение типов, параметр typeName должен быть именем с указанием сборки (см. описание свойства AssemblyQualifiedName), кроме случаев, когда этот тип находится в текущей выполняемой сборке или в библиотеке Mscorlib.dll — тогда достаточно задать имя типа с указанием пространства имен.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Метод, находящий и возвращающий сборку, заданную в параметре typeName.A method that locates and returns the assembly that is specified in typeName. Имя сборки передается методу assemblyResolver в виде объекта AssemblyName.The assembly name is passed to assemblyResolver as an AssemblyName object. Если объект typeName не содержит имя сборки, метод assemblyResolver не вызывается.If typeName does not contain the name of an assembly, assemblyResolver is not called. Если метод assemblyResolver не указан, выполняется стандартное разрешение сборки.If assemblyResolver is not supplied, standard assembly resolution is performed.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers. В противном случае возможно повышение привилегий для вредоносного кода.Doing so could result in elevation of privilege for malicious code. Рекомендуется использовать только методы, предоставленные пользователями или знакомые им.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Метод, находящий и возвращающий тип, заданный в параметре typeName, из сборки, возвращенной методом assemblyResolver или стандартным методом разрешения сборки.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Если сборка не предоставлена, этот метод может предоставить ее.If no assembly is provided, the method can provide one. Метод также принимает параметр, указывающий, следует ли выполнять поиск без учета регистра; этому параметру передается значение ignoreCase.The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

Внимание. Не передавайте методы от неизвестных или недоверенных вызывающих модулей.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

Значение true, чтобы создать исключение, если тип не удается найти; значение false, чтобы вернуть значение null.true to throw an exception if the type cannot be found; false to return null. Кроме того, при указании значения false подавляются некоторые другие условия возникновения исключений, но не все из них.Specifying false also suppresses some other exception conditions, but not all of them. См. раздел "Исключения".See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

Значение true, чтобы не учитывать регистр при поиске typeName, значение false, чтобы учитывать регистр при поиске typeName.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Возвраты

Тип с указанным именем.The type with the specified name. Если тип не найден, параметр throwOnError определяет дальнейшее действие — возврат значения null или создание исключения.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. В некоторых случаях исключение создается независимо от значения параметра throwOnError.In some cases, an exception is thrown regardless of the value of throwOnError. См. раздел "Исключения".See the Exceptions section.

Исключения

Инициализатор класса вызывается и создает исключение.A class initializer is invoked and throws an exception.

throwOnError имеет значение true, и тип не найден.throwOnError is true and the type is not found.

-или--or- throwOnError имеет значение true, и typeName содержит недопустимые знаки, например внедренные табуляции.throwOnError is true and typeName contains invalid characters, such as an embedded tab. -или--or- throwOnError имеет значение true, и typeName является пустой строкой.throwOnError is true and typeName is an empty string.

-или--or- throwOnError имеет значение true, и typeName представляет тип массива с недопустимым размером.throwOnError is true and typeName represents an array type with an invalid size.

-или--or- typeName представляет массив TypedReference.typeName represents an array of TypedReference.

Произошла ошибка при интерпретации typeName в имя типа и имя сборки (например, если имя простого типа содержит неэкранированный специальный знак).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

-или--or- throwOnError имеет значение true, и typeName содержит недопустимый синтаксис (например "MyType[,*,]").throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

-или--or- typeName представляет универсальный тип, имеющий тип указателя, тип ByRef или Void в качестве одного из его аргументов типа.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

-или--or- typeName представляет универсальный тип, который содержит неправильное количество аргументов типа.typeName represents a generic type that has an incorrect number of type arguments.

-или--or- typeName представляет универсальный тип, и один из его аргументов типа не удовлетворяет ограничениям для соответствующего параметра типа.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError имеет значение true, и не удалось найти сборку либо одну из ее зависимостей.throwOnError is true and the assembly or one of its dependencies was not found.

Сборка или одна из ее зависимостей найдена, но не может быть загружена.The assembly or one of its dependencies was found, but could not be loaded.

-или--or- typeName содержит недопустимое имя сборки.typeName contains an invalid assembly name.

-или--or- typeName является допустимым именем сборки без имени типа.typeName is a valid assembly name without a type name.

Сборка или одна из ее зависимостей является недопустимой.The assembly or one of its dependencies is not valid.

-или--or- Сборка была скомпилирована в более поздней версии среды CLR, чем версия, загруженная в текущий момент.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Комментарии

Используйте эту перегрузку метода и связанные перегрузки (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) и GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) для замены используемой по умолчанию реализации GetType метод с реализациями более гибким.Use this method overload and its associated overloads (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) and GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) to replace the default implementation of the GetType method with more flexible implementations. Предоставляя собственные методы разрешения имен типов и имена сборок, содержащих их, сделайте следующее:By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Управлять какая версия типа загружается из сборки.Control which version of an assembly a type is loaded from.

  • Укажите другое место для поиска имени типа, которая не включает имя сборки.Provide another place to look for a type name that does not include an assembly name.

  • Загрузка сборок с помощью частичных имен сборок.Load assemblies using partial assembly names.

  • Вернуть подклассы System.Type , не создаются путем общеязыковой среды выполнения (CLR).Return subclasses of System.Type that are not created by the common language runtime (CLR).

Например в сериализации, независимой от версии этот метод позволяет найти сборку «best fit» с помощью часть имени.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. Другие перегрузки GetType метод требует имя типа с указанием сборки, которое включает номер версии.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

Альтернативные реализации системы типов может потребоваться вернуть подклассы System.Type , не создается в среде CLR, все типы, которые возвращаются другие перегрузки GetType метод являются типами среды выполнения.Alternate implementations of the type system may need to return subclasses of System.Type that are not created by the CLR; all types that are returned by other overloads of the GetType method are runtime types.

Примечания об использованииUsage Notes

Эта перегрузка метода и связанные перегрузки проанализировать typeName в имя типа и имя сборки и затем разрешать имена.This method overload and its associated overloads parse typeName into the name of a type and the name of an assembly, and then resolve the names. Разрешение имени сборки предшествует разрешения имени типа, так как имя типа должно быть разрешено в контексте сборки.Resolution of the assembly name occurs before resolution of the type name, because a type name must be resolved in the context of an assembly.

Примечание

Если вы не знакомы с концепцией имен типов с указанием сборки, см. в разделе AssemblyQualifiedName свойство.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Если typeName , не является именем с указанием сборки, разрешение сборки пропускается.If typeName is not an assembly-qualified name, assembly resolution is skipped. Неполные имена типов может быть разрешен в контексте Mscorlib.dll или текущей выполняемой сборке или при необходимости можно указать сборку в typeResolver параметра.Unqualified type names can be resolved in the context of Mscorlib.dll or the currently executing assembly, or you can optionally provide an assembly in the typeResolver parameter. Эффекты, включая или исключая имя сборки для различных видов разрешение имен, отображаются в виде таблицы смешанной разрешение имен раздел.The effects of including or omitting the assembly name for different kinds of name resolution are displayed as a table in the Mixed Name Resolution section.

Общие примечания по использованию:General usage notes:

  • Не передавайте методы для assemblyResolver или typeResolver если они исходят от неизвестных или недоверенных вызывающих модулей.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Рекомендуется использовать только методы, предоставленные пользователями или знакомые им.Use only methods that you provide or that you are familiar with.

    Внимание!

    С помощью методов из неизвестных или недоверенных вызывающих модулей может привести повышение привилегий для вредоносного кода.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Если опустить assemblyResolver и/или typeResolver параметры, значение throwOnError параметр передается в методы, выполняющие разрешение по умолчанию.If you omit the assemblyResolver and/or typeResolver parameters, the value of the throwOnError parameter is passed to the methods that perform the default resolution.

  • Если throwOnErrortrue, этот метод вызывает исключение TypeLoadException при typeResolver возвращает nullи FileNotFoundException при assemblyResolver возвращает null.If throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Этот метод не перехватывает исключения, создаваемые assemblyResolver и typeResolver.This method does not catch exceptions thrown by assemblyResolver and typeResolver. Вы несете ответственность за любые исключения, которые вызываются методами распознавателя.You are responsible for any exceptions that are thrown by the resolver methods.

Разрешение сборокResolving Assemblies

assemblyResolver Метод получает AssemblyName объект, который создается путем синтаксического анализа строковое имя сборки, включенный в typeName.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Если typeName не содержит имя сборки, assemblyResolver не вызывается и null передается typeResolver.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Если assemblyResolver не указан, стандартная сборкой проверка используется для обнаружения сборки.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Если assemblyResolver предоставляется, GetType метод не выполняет стандартные проверки; в этом случае необходимо убедиться, что ваш assemblyResolver может обрабатывать все сборки, передайте в него.If assemblyResolver is provided, the GetType method does not do standard probing; in that case you must ensure that your assemblyResolver can handle all the assemblies you pass to it.

assemblyResolver Метод должен возвращать null Если сборка не может быть разрешена.The assemblyResolver method should return null if the assembly cannot be resolved. Если assemblyResolver возвращает null, typeResolver не вызывается и дальнейшая обработка не выполняется; Кроме того, если throwOnErrortrue, FileNotFoundException возникает исключение.If assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Если AssemblyName передаваемый assemblyResolver является частичным имя, один или несколько из его частей, null.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Например, если он не имеет версии Version свойство null.For example, if it has no version, the Version property is null. Если Version свойство, CultureInfo свойство и GetPublicKeyToken метода возвращают null, а затем только простое имя сборки было указано.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. assemblyResolver Метод может использовать или игнорировать все части имени сборки.The assemblyResolver method can use or ignore all parts of the assembly name.

Влияние различных параметров разрешения сборок, отображаются в виде таблицы смешанной разрешение имен раздела, для имен типов простых и с указанием сборки.The effects of different assembly resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Разрешение типовResolving Types

Если typeName не указано имя сборки, typeResolver всегда вызывается.If typeName does not specify an assembly name, typeResolver is always called. Если typeName указывает имя сборки, typeResolver вызывается только в том случае, если имя сборки успешно разрешено.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Если assemblyResolver или стандартной сборки, проверки возвращает null, typeResolver не вызывается.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

typeResolver Метод принимает три аргумента:The typeResolver method receives three arguments:

  • Сборка для поиска или null Если typeName не содержит имя сборки.The assembly to search or null if typeName does not contain an assembly name.

  • Простое имя типа.The simple name of the type. В случае вложенный тип это внешний содержащий тип.In the case of a nested type, this is the outermost containing type. В случае универсального типа это простое имя универсального типа.In the case of a generic type, this is the simple name of the generic type.

  • Логическое значение, которое является true Если нужно игнорировать регистр имен типов.A Boolean value that is true if the case of type names is to be ignored.

Реализация определяет способ использования этих аргументов.The implementation determines the way these arguments are used. typeResolver Метод должен возвращать null при невозможности разрешить тип.The typeResolver method should return null if it cannot resolve the type. Если typeResolver возвращает null и throwOnErrortrue, эта перегрузка GetType вызывает TypeLoadException.If typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Влияние различных параметров разрешения типов отображаются в виде таблицы смешанной разрешение имен раздела, для имен типов простых и с указанием сборки.The effects of different type resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Разрешение вложенных типовResolving Nested Types

Если typeName является вложенным типом, только имя внешней содержащий тип передается typeResolver.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Когда typeResolver возвращает этот тип GetNestedType метод вызывается рекурсивно, пока не будет устранена внутреннего вложенного типа.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Разрешение универсальных типовResolving Generic Types

GetType Вызывается рекурсивно для разрешения универсальных типов: Во-первых, чтобы определить общий тип, а затем его аргументов типа.The GetType is called recursively to resolve generic types: First to resolve the generic type itself, and then to resolve its type arguments. Если аргумент типа является универсальным, GetType вызывается рекурсивно для устранения его аргументов типа и т. д.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

Сочетание assemblyResolver и typeResolver предоставить должны быть способны все уровни Косвенная рекурсия.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Например, предположим, вы предоставляете assemblyResolver загрузки, который управляет MyAssembly.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Предположим, что вы хотите определить общий тип Dictionary<string, MyType> (Dictionary(Of String, MyType) в Visual Basic).Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). Можно передать следующее имя универсального типа:You might pass the following generic type name:

"System.Collections.Generic.Dictionary`2[System.String,[MyNamespace.MyType, MyAssembly]]"  

Обратите внимание, что MyType является аргументом типа, только с указанием сборки.Notice that MyType is the only assembly-qualified type argument. Имена Dictionary<TKey,TValue> и String классы не с указанием сборки.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. Ваш typeResolver должен быть дескриптор может либо сборки или null, так как он будет получать null для Dictionary<TKey,TValue> и String.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Он может обрабатывать такую ситуацию путем вызова перегрузки GetType метод, который принимает строку, так как имена неполных типов находятся в библиотеке Mscorlib.dll:It can handle that case by calling an overload of the GetType method that takes a string, because both of the unqualified type names are in Mscorlib.dll:

Type t = Type.GetType(test,
                      (aName) => aName.Name == "MyAssembly" ? 
                          Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : null,
                      (assem, name, ignore) => assem == null ? 
                          Type.GetType(name, false, ignore) : 
                              assem.GetType(name, false, ignore)
                     ); 

assemblyResolver Метод не вызывается для типа словаря и строкового типа, так как эти имена типов не с указанием сборки.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Теперь предположим, что вместо System.String, первый универсальный аргумент имеет тип YourType, из YourAssembly:Now suppose that instead of System.String, the first generic argument type is YourType, from YourAssembly:

"System.Collections.Generic.Dictionary`2[[YourNamespace.YourType, YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], [MyNamespace.MyType, MyAssembly]]"  

Так как эта сборка не является ни Mscorlib.dll, ни текущей выполняемой сборке, не удается разрешить YourType без имени с указанием сборки.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Так как ваш assemblyResolve будет вызывается рекурсивно, он должен иметь возможность обрабатывать этот случай.Because your assemblyResolve will be called recursively, it must be able to handle this case. Вместо возвращения null для сборок, отличных от MyAssembly, она теперь выполняет загрузка сборки с помощью предоставленного AssemblyName объекта.Instead of returning null for assemblies other than MyAssembly, it now performs an assembly load using the supplied AssemblyName object.

Type t2 = Type.GetType(test,
                       (aName) => aName.Name == "MyAssembly" ? 
                           Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : 
                           Assembly.Load(aName),
                       (assem, name, ignore) => assem == null ? 
                           Type.GetType(name, false, ignore) : 
                               assem.GetType(name, false, ignore), true
                      ); 

К примечания об использовании.Back to Usage Notes.

Разрешение имен типов с помощью специальных символовResolving Type Names with Special Characters

Некоторые символы имеют специальное значение в именах с указанием сборки.Certain characters have special meanings in assembly-qualified names. Если имя простого типа содержит эти символы, они вызовут ошибки синтаксического анализа при простое имя является частью имени с указанием сборки.If a simple type name contains these characters, the characters cause parsing errors when the simple name is part of an assembly-qualified name. Во избежание ошибки синтаксического анализа, необходимо экранировать специальные символы обратной косой чертой, прежде чем можно передать имя с указанием сборки для GetType метод.To avoid the parsing errors, you must escape the special characters with a backslash before you can pass the assembly-qualified name to the GetType method. Например, если тип имеет имя Strange]Type, escape-символ должны добавляться впереди квадратная скобка следующим образом: Strange\]Type.For example, if a type is named Strange]Type, the escape character must be added ahead of the square bracket as follows: Strange\]Type.

Примечание

Имена с помощью таких специальных символов не может быть создан в Visual Basic или C#, но могут создаваться с помощью промежуточного языка Майкрософт (MSIL) или путем создания динамических сборок.Names with such special characters cannot be created in Visual Basic or C#, but can be created by using Microsoft intermediate language (MSIL) or by emitting dynamic assemblies.

В следующей таблице показаны специальные символы для имен типов.The following table shows the special characters for type names.

ЗнакCharacter ЗначениеMeaning
, (запятая), (comma) Разделитель для имен с указанием сборки.Delimiter for assembly-qualified names.
[] (квадратные скобки)[] (square brackets) Как пара суффикс указывает тип массива; как пара разделителей заключает списки универсальных аргументов и имена с указанием сборки.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
& (амперсанд)& (ampersand) В качестве суффикса указывает, что тип является ссылочным типом.As a suffix, indicates that a type is a reference type.
* (звездочка)* (asterisk) В качестве суффикса указывает, что тип является типом указателя.As a suffix, indicates that a type is a pointer type.
+ (плюс)+ (plus) Разделитель вложенных типов.Delimiter for nested types.
\ (обратная косая черта)\ (backslash) Escape-символ.Escape character.

Свойства, такие как AssemblyQualifiedName возврата правильно escape-строк.Properties such as AssemblyQualifiedName return correctly escaped strings. Необходимо передать правильно escape-строк для GetType метод.You must pass correctly escaped strings to the GetType method. В свою очередь GetType метод передает правильно экранированные имена для typeResolver и методы разрешения типа по умолчанию.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Если необходимо сравнить имя без escape-символов в имени typeResolver, необходимо удалить escape-символы.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

К примечания об использовании.Back to Usage Notes.

Разрешение имен, смешанныйMixed Name Resolution

В следующей таблице перечислены взаимодействия между assemblyResolver, typeResolverи разрешение имен по умолчанию, для всех сочетаний имени типа и имени сборки в typeName:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Имя типа содержимогоContents of type name Метод распознавателя сборокAssembly resolver method Метод сопоставления имен типаType resolver method РезультатResult
тип сборкиtype, assembly nullnull nullnull Аналогичен вызову Type.GetType(String, Boolean, Boolean) перегрузки метода.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
тип сборкиtype, assembly предоставленныйprovided nullnull assemblyResolver Возвращает сборку, или возвращает null при невозможности разрешить сборки.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Если сборка не будет разрешена, Assembly.GetType(String, Boolean, Boolean) загрузить тип из сборки используется перегрузка метода; в противном случае отсутствует не пытается разрешить тип.If the assembly is resolved, the Assembly.GetType(String, Boolean, Boolean) method overload is used to load the type from the assembly; otherwise, there is no attempt to resolve the type.
тип сборкиtype, assembly nullnull предоставленныйprovided Эквивалентно преобразование имени сборки для AssemblyName объекта и вызывая метод Assembly.Load(AssemblyName) перегруженный метод для получения сборки.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Если сборка разрешается, он передается typeResolver; в противном случае typeResolver не вызывается и дальнейшая попытка разрешить тип.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
тип сборкиtype, assembly предоставленныйprovided предоставленныйprovided assemblyResolver Возвращает сборку, или возвращает null при невозможности разрешить сборки.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Если сборка разрешается, он передается typeResolver; в противном случае typeResolver не вызывается и дальнейшая попытка разрешить тип.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
typetype значение NULL, в которыйnull, provided nullnull Аналогичен вызову Type.GetType(String, Boolean, Boolean) перегрузки метода.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Поскольку имя сборки не указан, производится поиск только библиотеки Mscorlib.dll и текущей выполняемой сборке.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Если assemblyResolver не указан, он игнорируется.If assemblyResolver is provided, it is ignored.
typetype значение NULL, в которыйnull, provided предоставленныйprovided typeResolver вызывается, и null передается для сборки.typeResolver is called, and null is passed for the assembly. typeResolver можно предоставить тип из любой сборки, включая сборки, загружаемые для этой цели.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Если assemblyResolver не указан, он игнорируется.If assemblyResolver is provided, it is ignored.
сборкаassembly значение NULL, в которыйnull, provided значение NULL, в которыйnull, provided Объект FileLoadException возникает исключение, так как имя сборки анализируется как будто имя типа с указанием сборки.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. Это приводит к недопустимое имя сборки.This results in an invalid assembly name.

Вернуться: Примечания об использовании, разрешение сборок, разрешение типов.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

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