Module.GetType Метод

Определение

Возвращает указанный тип.

Перегрузки

GetType(String)

Возвращает заданный тип (выполняет поиск с учетом регистра).

GetType(String, Boolean)

Возвращает указанный тип, выполняя поиск в модуле с заданным требованием к учету регистра.

GetType(String, Boolean, Boolean)

Возвращает указанный тип, определяя, следует ли учитывать регистр при поиске модуля и должно ли создаваться исключение, если не удалось обнаружить этот тип.

GetType(String)

Возвращает заданный тип (выполняет поиск с учетом регистра).

public:
 virtual Type ^ GetType(System::String ^ className);
public virtual Type? GetType (string className);
public virtual Type GetType (string className);
[System.Runtime.InteropServices.ComVisible(true)]
public virtual Type GetType (string className);
override this.GetType : string -> Type
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetType : string -> Type
Public Overridable Function GetType (className As String) As Type

Параметры

className
String

Имя искомого типа. Имя должно содержать пространство имен.

Возвращаемое значение

Type

Объект Type, представляющий указанный тип, если тип находится в этом модуле. В противном случае возвращается значение null.

Атрибуты

Исключения

className имеет значение null.

Вызываются инициализаторы класса и создается исключение.

className представляет собой строку нулевой длины.

Для className требуется зависимая сборка, которую не удалось найти.

Для className требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.

-или- Текущая сборка была загружена в контекст только для отражения, а для className требуется зависимая сборка, которая не была предварительно загружена.

Для className требуется зависимая сборка, однако файл не является допустимой сборкой.

-или- Для className требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.

Примеры

В следующем примере отображается имя типа в указанном модуле.

using namespace System;
using namespace System::Reflection;

namespace ReflectionModule_Examples
{
   public ref class MyMainClass{};

}

int main()
{
   array<Module^>^moduleArray;
   moduleArray = ReflectionModule_Examples::MyMainClass::typeid->Assembly->GetModules( false );
   
   //In a simple project with only one module, the module at index
   // 0 will be the module containing these classes.
   Module^ myModule = moduleArray[ 0 ];
   Type^ myType;
   myType = myModule->GetType( "ReflectionModule_Examples.MyMainClass" );
   Console::WriteLine( "Got type: {0}", myType );
}
using System;
using System.Reflection;

namespace ReflectionModule_Examples
{
    class MyMainClass
    {
        static void Main()
        {
            Module[] moduleArray;
            
            moduleArray = typeof(MyMainClass).Assembly.GetModules(false);
            
            //In a simple project with only one module, the module at index
            // 0 will be the module containing these classes.
            Module myModule = moduleArray[0];

            Type myType;

            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass");
            Console.WriteLine("Got type: {0}", myType.ToString());
        }
    }
}
Imports System.Reflection

'This code assumes that the root namespace is set to empty("").
Namespace ReflectionModule_Examples
    Class MyMainClass
        Shared Sub Main()
            Dim moduleArray() As [Module]

            moduleArray = GetType(MyMainClass).Assembly.GetModules(False)

            'In a simple project with only one module, the module at index
            ' 0 will be the module containing these classes.
            Dim myModule As [Module] = moduleArray(0)

            Dim myType As Type

            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass")
            Console.WriteLine("Got type: {0}", myType.ToString())
        End Sub
    End Class
End Namespace 'ReflectionModule_Examples

Комментарии

Примечание

Если тип переадресован в другую сборку, он по-прежнему возвращается этим методом. Сведения о переадресации типов см. в разделе "Пересылка типов" в среде CLR.

Тип можно получить из определенного модуля с помощью Module.GetType. Вызов Module.GetType модуля, содержащего манифест, не будет искать всю сборку. Чтобы получить тип из сборки, независимо от того, в каком модуле он находится, необходимо вызвать Assembly.GetType.

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

GetType(String, Boolean)

Возвращает указанный тип, выполняя поиск в модуле с заданным требованием к учету регистра.

public:
 virtual Type ^ GetType(System::String ^ className, bool ignoreCase);
public virtual Type? GetType (string className, bool ignoreCase);
public virtual Type GetType (string className, bool ignoreCase);
[System.Runtime.InteropServices.ComVisible(true)]
public virtual Type GetType (string className, bool ignoreCase);
override this.GetType : string * bool -> Type
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetType : string * bool -> Type
Public Overridable Function GetType (className As String, ignoreCase As Boolean) As Type

Параметры

className
String

Имя искомого типа. Имя должно содержать пространство имен.

ignoreCase
Boolean

Значение true для поиска без учета регистра. В противном случае используется значение false.

Возвращаемое значение

Type

Объект Type, представляющий указанный тип, если тип находится в этом модуле. В противном случае возвращается значение null.

Атрибуты

Исключения

className имеет значение null.

Вызываются инициализаторы класса и создается исключение.

className представляет собой строку нулевой длины.

Для className требуется зависимая сборка, которую не удалось найти.

Для className требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.

-или- Текущая сборка была загружена в контекст только для отражения, а для className требуется зависимая сборка, которая не была предварительно загружена.

Для className требуется зависимая сборка, однако файл не является допустимой сборкой.

-или- Для className требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.

Примеры

В следующем примере отображается имя типа в указанном модуле, указывающее false для ignoreCase параметра, чтобы этот случай не был проигнорирован.

using namespace System;
using namespace System::Reflection;

namespace ReflectionModule_Examples
{
   public ref class MyMainClass{};

}

int main()
{
   array<Module^>^moduleArray;
   moduleArray = ReflectionModule_Examples::MyMainClass::typeid->Assembly->GetModules( false );
   
   //In a simple project with only one module, the module at index
   // 0 will be the module containing these classes.
   Module^ myModule = moduleArray[ 0 ];
   Type^ myType;
   myType = myModule->GetType( "ReflectionModule_Examples.MyMainClass", false );
   Console::WriteLine( "Got type: {0}", myType );
}
using System;
using System.Reflection;

namespace ReflectionModule_Examples
{
    class MyMainClass
    {
        static void Main()
        {
            Module[] moduleArray;
            
            moduleArray = typeof(MyMainClass).Assembly.GetModules(false);
            
            //In a simple project with only one module, the module at index
            // 0 will be the module containing these classes.
            Module myModule = moduleArray[0];

            Type myType;
            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass", false);
            Console.WriteLine("Got type: {0}", myType.ToString());
        }
    }
}
Imports System.Reflection

'This code assumes that the root namespace is set to empty("").
Namespace ReflectionModule_Examples
    Class MyMainClass
        Shared Sub Main()
            Dim moduleArray() As [Module]

            moduleArray = GetType(MyMainClass).Assembly.GetModules(False)

            'In a simple project with only one module, the module at index
            ' 0 will be the module containing these classes.
            Dim myModule As [Module] = moduleArray(0)

            Dim myType As Type
            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass", False)
            Console.WriteLine("Got type: {0}", myType.ToString())
        End Sub
    End Class
End Namespace 'ReflectionModule_Examples

Комментарии

Примечание

Если тип переадресован в другую сборку, он по-прежнему возвращается этим методом. Сведения о переадресации типов см. в разделе "Пересылка типов" в среде CLR.

Тип можно получить из определенного модуля с помощью Module.GetType. Вызов Module.GetType модуля, содержащего манифест, не будет искать всю сборку. Чтобы получить тип из сборки, независимо от того, в каком модуле он находится, необходимо вызвать Assembly.GetType.

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

GetType(String, Boolean, Boolean)

Возвращает указанный тип, определяя, следует ли учитывать регистр при поиске модуля и должно ли создаваться исключение, если не удалось обнаружить этот тип.

public:
 virtual Type ^ GetType(System::String ^ className, bool throwOnError, bool ignoreCase);
public virtual Type GetType (string className, bool throwOnError, bool ignoreCase);
public virtual Type? GetType (string className, bool throwOnError, bool ignoreCase);
[System.Runtime.InteropServices.ComVisible(true)]
public virtual Type GetType (string className, bool throwOnError, bool ignoreCase);
override this.GetType : string * bool * bool -> Type
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetType : string * bool * bool -> Type
Public Overridable Function GetType (className As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Параметры

className
String

Имя искомого типа. Имя должно содержать пространство имен.

throwOnError
Boolean

Значение true, чтобы создать исключение, если тип не удается найти; значение false, чтобы вернуть значение null.

ignoreCase
Boolean

Значение true для поиска без учета регистра. В противном случае используется значение false.

Возвращаемое значение

Type

Объект Type, представляющий указанный тип, если тип был объявлен в этом модуле; в противном случае — null.

Атрибуты

Исключения

className имеет значение null.

Вызываются инициализаторы класса и создается исключение.

className представляет собой строку нулевой длины.

throwOnError является true, не удается найти тип.

Для className требуется зависимая сборка, которую не удалось найти.

Для className требуется зависимая сборка, которая была найдена, но ее не удалось загрузить.

-или- Текущая сборка была загружена в контекст только для отражения, а для className требуется зависимая сборка, которая не была предварительно загружена.

Для className требуется зависимая сборка, однако файл не является допустимой сборкой.

-или- Для className требуется зависимая сборка, которая была скомпилирована для версии среды выполнения более поздней, чем текущая загруженная версия.

Примеры

В следующем примере отображается имя типа в указанном модуле. ignoreCase И throwOnError параметры указываются как false.

using namespace System;
using namespace System::Reflection;

namespace ReflectionModule_Examples
{
   public ref class MyMainClass{};

}

int main()
{
   array<Module^>^moduleArray;
   moduleArray = ReflectionModule_Examples::MyMainClass::typeid->Assembly->GetModules( false );
   
   //In a simple project with only one module, the module at index
   // 0 will be the module containing this class.
   Module^ myModule = moduleArray[ 0 ];
   Type^ myType;
   myType = myModule->GetType( "ReflectionModule_Examples.MyMainClass", false, false );
   Console::WriteLine( "Got type: {0}", myType );
}
using System;
using System.Reflection;

namespace ReflectionModule_Examples
{
    class MyMainClass
    {
        static void Main()
        {
            Module[] moduleArray;
            
            moduleArray = typeof(MyMainClass).Assembly.GetModules(false);
            
            //In a simple project with only one module, the module at index
            // 0 will be the module containing this class.
            Module myModule = moduleArray[0];

            Type myType;
            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass", false, false);
            Console.WriteLine("Got type: {0}", myType.ToString());
        }
    }
}
Imports System.Reflection

'This code assumes that the root namespace is set to empty("").
Namespace ReflectionModule_Examples
    Class MyMainClass
        Shared Sub Main()
            Dim moduleArray() As [Module]

            moduleArray = GetType(MyMainClass).Assembly.GetModules(False)

            'In a simple project with only one module, the module at index
            ' 0 will be the module containing this class.
            Dim myModule As [Module] = moduleArray(0)

            Dim myType As Type
            myType = myModule.GetType("ReflectionModule_Examples.MyMainClass", False, False)
            Console.WriteLine("Got type: {0}", myType.ToString())
        End Sub
    End Class
End Namespace 'ReflectionModule_Examples

Комментарии

Параметр throwOnError влияет только на то, что происходит, если тип не найден. Это не влияет на другие исключения, которые могут быть выданы. В частности, если тип найден, но не может быть загружен, TypeLoadException может быть создан даже в том falseслучаеthrowOnError.

Примечание

Если тип переадресован в другую сборку, он по-прежнему возвращается этим методом. Сведения о переадресации типов см. в разделе "Пересылка типов" в среде CLR.

Тип можно получить из определенного модуля с помощью Module.GetType. Вызов Module.GetType модуля, содержащего манифест, не будет искать всю сборку. Чтобы получить тип из сборки, независимо от того, в каком модуле он находится, необходимо вызвать Assembly.GetType.

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