本文整理汇总了C#中EntityHandle类的典型用法代码示例。如果您正苦于以下问题:C# EntityHandle类的具体用法?C# EntityHandle怎么用?C# EntityHandle使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
EntityHandle类属于命名空间,在下文中一共展示了EntityHandle类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: IsValidCatchTypeHandle
internal static bool IsValidCatchTypeHandle(EntityHandle catchType)
{
return !catchType.IsNil &&
(catchType.Kind == HandleKind.TypeDefinition ||
catchType.Kind == HandleKind.TypeSpecification ||
catchType.Kind == HandleKind.TypeReference);
}
开发者ID:ESgarbi,项目名称:corefx,代码行数:7,代码来源:ExceptionRegionEncoder.cs
示例2: CilExceptionRegion
internal CilExceptionRegion(HandlerKind kind, EntityHandle catchType, int startOffset, int filterHandlerStart, int endOffset)
{
Kind = kind;
CatchType = catchType;
StartOffset = startOffset;
FilterHandlerStart = filterHandlerStart;
EndOffset = endOffset;
}
开发者ID:GrimDerp,项目名称:corefxlab,代码行数:8,代码来源:CilExceptionRegion.cs
示例3: InitializeObsoleteDataFromMetadata
/// <summary>
/// Initialize the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be
/// done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles.
/// </summary>
internal static void InitializeObsoleteDataFromMetadata(ref ObsoleteAttributeData data, EntityHandle token, PEModuleSymbol containingModule)
{
if (ReferenceEquals(data, ObsoleteAttributeData.Uninitialized))
{
ObsoleteAttributeData obsoleteAttributeData = GetObsoleteDataFromMetadata(token, containingModule);
Interlocked.CompareExchange(ref data, obsoleteAttributeData, ObsoleteAttributeData.Uninitialized);
}
}
开发者ID:CAPCHIK,项目名称:roslyn,代码行数:12,代码来源:ObsoleteAttributeHelpers.cs
示例4: GetObsoleteDataFromMetadata
/// <summary>
/// Get the ObsoleteAttributeData by fetching attributes and decoding ObsoleteAttributeData. This can be
/// done for Metadata symbol easily whereas trying to do this for source symbols could result in cycles.
/// </summary>
internal static ObsoleteAttributeData GetObsoleteDataFromMetadata(EntityHandle token, PEModuleSymbol containingModule)
{
ObsoleteAttributeData obsoleteAttributeData;
bool isObsolete = containingModule.Module.HasDeprecatedOrObsoleteAttribute(token, out obsoleteAttributeData);
Debug.Assert(isObsolete == (obsoleteAttributeData != null));
Debug.Assert(obsoleteAttributeData == null || !obsoleteAttributeData.IsUninitialized);
return obsoleteAttributeData;
}
开发者ID:CAPCHIK,项目名称:roslyn,代码行数:12,代码来源:ObsoleteAttributeHelpers.cs
示例5: GetRowNumber
/// <summary>
/// Returns the row number of a metadata table entry that corresponds
/// to the specified <paramref name="handle"/> in the context of <paramref name="reader"/>.
/// </summary>
/// <returns>One based row number.</returns>
/// <exception cref="ArgumentException">The <paramref name="handle"/> is not a valid metadata table handle.</exception>
public static int GetRowNumber(this MetadataReader reader, EntityHandle handle)
{
if (handle.IsVirtual)
{
return MapVirtualHandleRowId(reader, handle);
}
return handle.RowId;
}
开发者ID:ESgarbi,项目名称:corefx,代码行数:15,代码来源:MetadataTokens.cs
示例6: GetToken
/// <summary>
/// Returns the metadata token of the specified <paramref name="handle"/> in the context of <paramref name="reader"/>.
/// </summary>
/// <returns>Metadata token.</returns>
/// <exception cref="NotSupportedException">The operation is not supported for the specified <paramref name="handle"/>.</exception>
public static int GetToken(this MetadataReader reader, EntityHandle handle)
{
if (handle.IsVirtual)
{
return (int)handle.Type | MapVirtualHandleRowId(reader, handle);
}
return handle.Token;
}
开发者ID:ESgarbi,项目名称:corefx,代码行数:14,代码来源:MetadataTokens.cs
示例7: ConvertToTag
internal static uint ConvertToTag(EntityHandle handle)
{
if (handle.Type == TokenTypeIds.FieldDef)
{
return (uint)handle.RowId << NumberOfBits | Field;
}
else if (handle.Type == TokenTypeIds.ParamDef)
{
return (uint)handle.RowId << NumberOfBits | Param;
}
return 0;
}
开发者ID:noahfalk,项目名称:corefx,代码行数:13,代码来源:HasFieldMarshalTag.cs
示例8: GetCustomDebugInformation
internal static BlobHandle GetCustomDebugInformation(this MetadataReader reader, EntityHandle parent, Guid kind)
{
foreach (var cdiHandle in reader.GetCustomDebugInformation(parent))
{
var cdi = reader.GetCustomDebugInformation(cdiHandle);
if (reader.GetGuid(cdi.Kind) == kind)
{
// return the first record
return cdi.Value;
}
}
return default(BlobHandle);
}
开发者ID:CAPCHIK,项目名称:roslyn,代码行数:14,代码来源:MetadataUtilities.cs
示例9: ExceptionHandlerInfo
public ExceptionHandlerInfo(
ExceptionRegionKind kind,
LabelHandle tryStart,
LabelHandle tryEnd,
LabelHandle handlerStart,
LabelHandle handlerEnd,
LabelHandle filterStart,
EntityHandle catchType)
{
Kind = kind;
TryStart = tryStart;
TryEnd = tryEnd;
HandlerStart = handlerStart;
HandlerEnd = handlerEnd;
FilterStart = filterStart;
CatchType = catchType;
}
开发者ID:ESgarbi,项目名称:corefx,代码行数:17,代码来源:ControlFlowBuilder.cs
示例10: ConvertToTag
internal static uint ConvertToTag(EntityHandle handle)
{
uint tokenType = handle.Type;
uint rowId = (uint)handle.RowId;
switch (tokenType >> TokenTypeIds.RowIdBitCount)
{
case TokenTypeIds.TypeDef >> TokenTypeIds.RowIdBitCount:
return rowId << NumberOfBits | TypeDef;
case TokenTypeIds.MethodDef >> TokenTypeIds.RowIdBitCount:
return rowId << NumberOfBits | MethodDef;
case TokenTypeIds.Assembly >> TokenTypeIds.RowIdBitCount:
return rowId << NumberOfBits | Assembly;
}
return 0;
}
开发者ID:johnhhm,项目名称:corefx,代码行数:18,代码来源:HasDeclSecurityTag.cs
示例11: DecodeTupleTypesIfApplicable
public static TypeSymbol DecodeTupleTypesIfApplicable(
TypeSymbol metadataType,
EntityHandle targetSymbolToken,
PEModuleSymbol containingModule)
{
ImmutableArray<string> elementNames;
var hasTupleElementNamesAttribute = containingModule
.Module
.HasTupleElementNamesAttribute(targetSymbolToken, out elementNames);
// If we have the TupleElementNamesAttribute, but no names, that's
// bad metadata
if (hasTupleElementNamesAttribute && elementNames.IsDefaultOrEmpty)
{
return new UnsupportedMetadataTypeSymbol();
}
return DecodeTupleTypesInternal(metadataType, containingModule.ContainingAssembly, elementNames, hasTupleElementNamesAttribute);
}
开发者ID:tvsonar,项目名称:roslyn,代码行数:19,代码来源:TupleTypeDecoder.cs
示例12: ConvertToTag
internal static uint ConvertToTag(EntityHandle token)
{
HandleKind tokenKind = token.Kind;
uint rowId = (uint)token.RowId;
if (tokenKind == HandleKind.FieldDefinition)
{
return rowId << NumberOfBits | Field;
}
else if (tokenKind == HandleKind.Parameter)
{
return rowId << NumberOfBits | Param;
}
else if (tokenKind == HandleKind.PropertyDefinition)
{
return rowId << NumberOfBits | Property;
}
return 0;
}
开发者ID:noahfalk,项目名称:corefx,代码行数:19,代码来源:HasConstantTag.cs
示例13: GetTypeDefOrRefOrSpecCodedIndex
internal static int GetTypeDefOrRefOrSpecCodedIndex(EntityHandle typeHandle)
{
int tag = 0;
switch (typeHandle.Kind)
{
case HandleKind.TypeDefinition:
tag = 0;
break;
case HandleKind.TypeReference:
tag = 1;
break;
case HandleKind.TypeSpecification:
tag = 2;
break;
}
return (MetadataTokens.GetRowNumber(typeHandle) << 2) | tag;
}
开发者ID:CAPCHIK,项目名称:roslyn,代码行数:20,代码来源:MetadataUtilities.cs
示例14: DecodeTupleTypesIfApplicable
public static TypeSymbol DecodeTupleTypesIfApplicable(
TypeSymbol metadataType,
EntityHandle targetSymbolToken,
PEModuleSymbol containingModule)
{
Debug.Assert((object)metadataType != null);
Debug.Assert((object)containingModule != null);
ImmutableArray<string> elementNames;
var hasTupleElementNamesAttribute = containingModule
.Module
.HasTupleElementNamesAttribute(targetSymbolToken, out elementNames);
// If we have the TupleElementNamesAttribute, but no names, that's
// bad metadata
if (hasTupleElementNamesAttribute && elementNames.IsDefaultOrEmpty)
{
return new UnsupportedMetadataTypeSymbol();
}
var decoder = new TupleTypeDecoder(elementNames,
containingModule.ContainingAssembly);
try
{
var decoded = decoder.DecodeType(metadataType);
// If not all of the names have been used, the metadata is bad
if (!hasTupleElementNamesAttribute ||
decoder._namesIndex == 0)
{
return decoded;
}
}
catch (InvalidOperationException)
{
// Indicates that the tuple info in the attribute didn't match
// the type. Bad metadata.
}
// Bad metadata
return new UnsupportedMetadataTypeSymbol();
}
开发者ID:xyh413,项目名称:roslyn,代码行数:41,代码来源:TupleTypeDecoder.cs
示例15: TransformType
/// <summary>
/// Decodes the attributes applied to the given <see paramref="targetSymbol"/> from metadata and checks if <see cref="System.Runtime.CompilerServices.DynamicAttribute"/> is applied.
/// If so, it transforms the given <see paramref="metadataType"/>, using the decoded dynamic transforms attribute argument,
/// by replacing each occurrence of <see cref="System.Object"/> type with dynamic type.
/// If no <see cref="System.Runtime.CompilerServices.DynamicAttribute"/> is applied or the decoded dynamic transforms attribute argument is erroneous,
/// returns the unchanged <see paramref="metadataType"/>.
/// </summary>
/// <remarks>This method is a port of TypeManager::ImportDynamicTransformType from the native compiler.</remarks>
internal static TypeSymbol TransformType(
TypeSymbol metadataType,
int targetSymbolCustomModifierCount,
EntityHandle targetSymbolToken,
PEModuleSymbol containingModule,
RefKind targetSymbolRefKind = RefKind.None)
{
Debug.Assert((object)metadataType != null);
ImmutableArray<bool> dynamicTransformFlags;
if (containingModule.Module.HasDynamicAttribute(targetSymbolToken, out dynamicTransformFlags))
{
return TransformTypeInternal(metadataType, containingModule.ContainingAssembly,
targetSymbolCustomModifierCount, targetSymbolRefKind, dynamicTransformFlags,
haveCustomModifierFlags: true,
checkLength: true);
}
// No DynamicAttribute applied to the target symbol, return unchanged metadataType.
return metadataType;
}
开发者ID:daking2014,项目名称:roslyn,代码行数:29,代码来源:DynamicTypeDecoder.cs
示例16: GetAttributeTypeAndConstructor
public static bool GetAttributeTypeAndConstructor(this MetadataReader metadataReader, CustomAttributeHandle attributeHandle,
out EntityHandle attributeType, out EntityHandle attributeCtor)
{
attributeCtor = metadataReader.GetCustomAttribute(attributeHandle).Constructor;
if (attributeCtor.Kind == HandleKind.MemberReference)
{
attributeType = metadataReader.GetMemberReference((MemberReferenceHandle)attributeCtor).Parent;
return true;
}
else if (attributeCtor.Kind == HandleKind.MethodDefinition)
{
attributeType = metadataReader.GetMethodDefinition((MethodDefinitionHandle)attributeCtor).GetDeclaringType();
return true;
}
else
{
// invalid metadata
attributeType = default(EntityHandle);
return false;
}
}
开发者ID:niemyjski,项目名称:corert,代码行数:22,代码来源:MetadataExtensions.cs
示例17: GetAttributeTypeNamespaceAndName
public static bool GetAttributeTypeNamespaceAndName(this MetadataReader metadataReader, EntityHandle attributeType,
out StringHandle namespaceHandle, out StringHandle nameHandle)
{
namespaceHandle = default(StringHandle);
nameHandle = default(StringHandle);
if (attributeType.Kind == HandleKind.TypeReference)
{
TypeReference typeRefRow = metadataReader.GetTypeReference((TypeReferenceHandle)attributeType);
HandleKind handleType = typeRefRow.ResolutionScope.Kind;
// Nested type?
if (handleType == HandleKind.TypeReference || handleType == HandleKind.TypeDefinition)
return false;
nameHandle = typeRefRow.Name;
namespaceHandle = typeRefRow.Namespace;
return true;
}
else if (attributeType.Kind == HandleKind.TypeDefinition)
{
var def = metadataReader.GetTypeDefinition((TypeDefinitionHandle)attributeType);
// Nested type?
if (IsNested(def.Attributes))
return false;
nameHandle = def.Name;
namespaceHandle = def.Namespace;
return true;
}
else
{
// unsupported metadata
return false;
}
}
开发者ID:niemyjski,项目名称:corert,代码行数:37,代码来源:MetadataExtensions.cs
示例18: DecodeType
internal static CilType DecodeType(EntityHandle handle, CilTypeProvider provider, bool? isValueType)
{
SignatureTypeHandleCode code;
if (isValueType.HasValue)
{
code = isValueType.Value ? SignatureTypeHandleCode.ValueType : SignatureTypeHandleCode.Class;
}
else
{
code = SignatureTypeHandleCode.Unresolved;
}
switch (handle.Kind)
{
case HandleKind.TypeDefinition:
return provider.GetTypeFromDefinition(provider.Reader, (TypeDefinitionHandle)handle, code);
case HandleKind.TypeReference:
return provider.GetTypeFromReference(provider.Reader, (TypeReferenceHandle)handle, code);
case HandleKind.TypeSpecification:
return provider.GetTypeFromSpecification(provider.Reader, (TypeSpecificationHandle)handle, code);
default:
throw new ArgumentException("Handle is not a type definition, reference, or specification.", nameof(handle));
}
}
开发者ID:tarekgh,项目名称:corefxlab,代码行数:24,代码来源:SignatureDecoder.cs
示例19: AddEncLogEntry
public void AddEncLogEntry(EntityHandle entity, EditAndContinueOperation code)
{
_encLogTable.Add(new EncLogRow
{
Token = (uint)MetadataTokens.GetToken(entity),
FuncCode = (byte)code
});
}
开发者ID:tzetang,项目名称:corefx,代码行数:8,代码来源:MetadataBuilder.Tables.cs
示例20: HasAttribute
private bool HasAttribute(EntityHandle token, string asciiNamespaceName, string asciiTypeName)
{
foreach (var caHandle in GetCustomAttributes(token))
{
StringHandle namespaceName, typeName;
if (GetAttributeTypeNameRaw(caHandle, out namespaceName, out typeName) &&
StringStream.EqualsRaw(typeName, asciiTypeName) &&
StringStream.EqualsRaw(namespaceName, asciiNamespaceName))
{
return true;
}
}
return false;
}
开发者ID:johnhhm,项目名称:corefx,代码行数:15,代码来源:MetadataReader.WinMD.cs
注:本文中的EntityHandle类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论