이 구조체는 필드 형식에 대한 다양한 종류의 정보를 지정합니다.
구문
멤버
dwKind
공용 구조체를 해석하는 방법을 결정하는 dwTYPE_KIND 열거형의 값입니다.
type.typeMeta
[C++만 해당] dwKind가 TYPE_KIND_METADATA인 경우 METADATA_TYPE 구조체를 포함합니다.
type.typePdb
[C++만 해당] dwKind가 TYPE_KIND_PDB인 경우 PDB_TYPE 구조체를 포함합니다.
type.typeBuilt
[C++만 해당] dwKind가 TYPE_KIND_BUILT인 경우 BUILT_TYPE 구조체를 포함합니다.
type.unused
사용되지 않는 안쪽 여백입니다.
type
공용 구조체의 이름입니다.
unionmember
[C#만 해당] dwKind에 따라 적절한 구조체 형식으로 마샬링합니다.
설명
이 구조체는 채워진 GetTypeInfo 메서드에 전달됩니다. 구조체의 내용을 해석하는 방법은 dwKind 필드를 기준으로 합니다.
참고 항목
[C++만 해당] dwKind가 TYPE_KIND_BUILT인 경우 TYPE_INFO 구조체를 삭제할 때 기본 IDebugField 개체를 해제해야 합니다. 이를 위해 typeInfo.type.typeBuilt.pUnderlyingField->Release()를 호출합니다.
[C#만 해당] 다음 표에서는 각 종류의 형식에 대해 unionmember 멤버를 해석하는 방법을 보여 줍니다. 예제에서는 한 종류의 형식에 대해 해석하는 방법을 보여 줍니다.
dwKind |
unionmember가 해석되는 값 |
|---|---|
TYPE_KIND_METADATA |
METADATA_TYPE |
TYPE_KIND_PDB |
PDB_TYPE |
TYPE_KIND_BUILT |
BUILT_TYPE |
예시
다음 예제에서는 C#에서 TYPE_INFO 구조체의 unionmember 멤버를 해석하는 방법을 보여 줍니다. 이 예제는 한 형식(TYPE_KIND_METADATA)만 해석하지만 다른 형식도 정확히 동일한 방식으로 해석됩니다.
using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;
namespace MyPackage
{
public class MyClass
{
public void Interpret(TYPE_INFO ti)
{
if (ti.dwKind == (uint)enum_dwTypeKind.TYPE_KIND_METADATA)
{
METADATA_TYPE dataType = (METADATA_TYPE)Marshal.PtrToStructure(ti.unionmember,
typeof(METADATA_TYPE));
}
}
}
}
요구 사항
헤더: sh.h
네임스페이스: Microsoft.VisualStudio.Debugger.Interop
어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll