Marshal.GetITypeInfoForType(Type) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает интерфейс ITypeInfo из управляемого типа.
public:
static IntPtr GetITypeInfoForType(Type ^ t);
public static IntPtr GetITypeInfoForType (Type t);
[System.Security.SecurityCritical]
public static IntPtr GetITypeInfoForType (Type t);
static member GetITypeInfoForType : Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetITypeInfoForType : Type -> nativeint
Public Shared Function GetITypeInfoForType (t As Type) As IntPtr
Параметры
- t
- Type
Тип, интерфейс ITypeInfo
которого запрашивается.
Возвращаемое значение
nativeint
Указатель на интерфейс ITypeInfo
для параметра t
.
- Атрибуты
Исключения
t
не является типом, видимым для модели COM.
-или-
t
— это тип среды выполнения Windows.
Библиотека типов зарегистрирована для сборки, содержащей тип, но определение типа не найдено.
Примеры
В следующем примере показано, как получить указатель на ITypeInfo
интерфейс для типа с помощью GetITypeInfoForType метода .
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
Console.WriteLine("Calling Marshal.GetITypeInfoForType...");
// Get the ITypeInfo pointer for an Object type
IntPtr pointer = Marshal.GetITypeInfoForType(typeof(object));
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObjectInContext...")
' Get the ITypeInfo pointer for an Object type
pointer = Marshal.GetITypeInfoForType(Type.GetType("System.Object"))
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
Комментарии
Этот метод возвращает указатель на реализацию, основанную ITypeInfo
на исходном типе. Вызов объекта с GetITypeInfoForType вызывает увеличение числа ссылок на указатель интерфейса перед возвратом указателя. Всегда используйте для Marshal.Release уменьшения количества ссылок после завершения работы с указателем. Можно применить , чтобы заменить стандартное System.Runtime.InteropServices.MarshalAsAttribute поведение маршалинга взаимодействия этим пользовательским маршалером.