Прочитать на английском

Поделиться через


VarEnum Перечисление

Определение

Внимание!

Marshalling VARIANTs may be unavailable in future releases.

Показывает способ маршалинга элементов массива при маршалинге массива из управляемого кода в неуправляемый код как массива SafeArray.

C#
[System.Obsolete("Marshalling VARIANTs may be unavailable in future releases.")]
public enum VarEnum
C#
public enum VarEnum
C#
[System.Serializable]
public enum VarEnum
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum VarEnum
Наследование
Атрибуты

Поля

Имя Значение Описание
VT_ARRAY 8192

Показывает указатель SAFEARRAY.

VT_BLOB 65

Показывает длину префикса в байтах.

VT_BLOB_OBJECT 70

Показывает, что BLOB-объект содержит объект.

VT_BOOL 11

Показывает логическое значение (Boolean).

VT_BSTR 8

Показывает строку BSTR.

VT_BYREF 16384

Показывает, что значение является ссылкой.

VT_CARRAY 28

Показывает массив в стиле языка C.

VT_CF 71

Показывает формат буфера.

VT_CLSID 72

Показывает идентификатор ID класса.

VT_CY 6

Показывает денежное значение.

VT_DATE 7

Показывает значение DATE.

VT_DECIMAL 14

Показывает значение decimal.

VT_DISPATCH 9

Показывает указатель IDispatch.

VT_EMPTY 0

Показывает, что значение не задано.

VT_ERROR 10

Показывает SCODE.

VT_FILETIME 64

Показывает значение FILETIME.

VT_HRESULT 25

Показывает значение HRESULT.

VT_I1 16

Показывает значение char.

VT_I2 2

Показывает целое число short.

VT_I4 3

Показывает целое число long.

VT_I8 20

Показывает 64-разрядное целое число.

VT_INT 22

Показывает целочисленное значение.

VT_LPSTR 30

Показывает строку, заканчивающуюся нулем.

VT_LPWSTR 31

Показывает двухбайтную строку, завершенную null.

VT_NULL 1

Показывает значение null, аналогичное значению null в SQL.

VT_PTR 26

Показывает тип указателя.

VT_R4 4

Показывает значение float.

VT_R8 5

Показывает значение double.

VT_RECORD 36

Показывает тип, определенный пользователем.

VT_SAFEARRAY 27

Показывает SAFEARRAY. Не допустимо для значений типа VARIANT.

VT_STORAGE 67

Показывает, что далее следует имя хранилища.

VT_STORED_OBJECT 69

Показывает, что хранилище содержит объект.

VT_STREAM 66

Показывает, что далее следует имя потока.

VT_STREAMED_OBJECT 68

Показывает, что поток содержит объект.

VT_UI1 17

Показывает byte.

VT_UI2 18

Показывает unsignedshort.

VT_UI4 19

Показывает unsignedlong.

VT_UI8 21

Показывает 64-разрядное целое число без знака.

VT_UINT 23

Показывает целое число unsigned.

VT_UNKNOWN 13

Показывает указатель IUnknown.

VT_USERDEFINED 29

Показывает тип, определенный пользователем.

VT_VARIANT 12

Показывает указатель far типа VARIANT.

VT_VECTOR 4096

Показывает одномерный сосчитанный массив.

VT_VOID 24

Показывает void в стиле языка C.

Примеры

C#
using System;
using System.Runtime.InteropServices;

namespace MyModule
{
    // If you do not have a type library for an interface
    // you can redeclare it using ComImportAttribute.

    // This is how the interface would look in an idl file.

    //[
    //object,
    //uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
    //dual,	helpstring("IMyStorage Interface"),
    //pointer_default(unique)
    //]
    //interface IMyStorage : IDispatch
    //{
    //	[id(1)]
    //	HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
    //	[id(2)]
    //	HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
    //	[id(3)]
    //	HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
    //	[id(4), propget]
    //	HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
    //};

    // This is the managed declaration.

    [ComImport]
    [Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
    public interface IMyStorage
    {
        [DispId(1)]
        [return: MarshalAs(UnmanagedType.Interface)]
        object GetItem([In, MarshalAs(UnmanagedType.BStr)] String bstrName);

        [DispId(2)]
        void GetItems([In, MarshalAs(UnmanagedType.BStr)] String bstrLocation,
            [Out, MarshalAs( UnmanagedType.SafeArray,
                      SafeArraySubType = VarEnum.VT_VARIANT )] out Object[] Items);

        [DispId(3)]
        void GetItemDescriptions([In] String bstrLocation,
            [In, Out, MarshalAs(UnmanagedType.SafeArray)] ref Object[] varDescriptions);

        bool IsEmpty
        {
            [DispId(4)]
            [return: MarshalAs(UnmanagedType.VariantBool)]
            get;
        }
    }
}

Комментарии

Используется с System.Runtime.InteropServices.MarshalAsAttribute для явного управления типом SafeArrayэлемента .

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

Продукт Версии (Устарело)
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0 (1.2, 1.3, 1.4, 1.5, 1.6, 2.1)
UWP (10.0)

См. также раздел