本文整理汇总了C#中BlobHandle.GetVirtualIndex方法的典型用法代码示例。如果您正苦于以下问题:C# BlobHandle.GetVirtualIndex方法的具体用法?C# BlobHandle.GetVirtualIndex怎么用?C# BlobHandle.GetVirtualIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BlobHandle
的用法示例。
在下文中一共展示了BlobHandle.GetVirtualIndex方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetVirtualBlobBytes
internal byte[] GetVirtualBlobBytes(BlobHandle handle, bool unique)
{
BlobHandle.VirtualIndex index = handle.GetVirtualIndex();
byte[] result = s_virtualValues[(int)index];
switch (index)
{
case BlobHandle.VirtualIndex.AttributeUsage_AllowMultiple:
case BlobHandle.VirtualIndex.AttributeUsage_AllowSingle:
result = (byte[])result.Clone();
handle.SubstituteTemplateParameters(result);
break;
default:
if (unique)
{
result = (byte[])result.Clone();
}
break;
}
return result;
}
示例2: GetBlobReader
internal BlobReader GetBlobReader(BlobHandle handle)
{
if (handle.IsVirtual)
{
if (_lazyVirtualHeapBlobs == null)
{
Interlocked.CompareExchange(ref _lazyVirtualHeapBlobs, new VirtualHeapBlobTable(), null);
}
int index = (int)handle.GetVirtualIndex();
int length = s_virtualHeapBlobs[index].Length;
VirtualHeapBlob virtualBlob;
lock (_lazyVirtualHeapBlobs)
{
if (!_lazyVirtualHeapBlobs.Table.TryGetValue(handle, out virtualBlob))
{
virtualBlob = new VirtualHeapBlob(GetVirtualBlobArray(handle, unique: false));
_lazyVirtualHeapBlobs.Table.Add(handle, virtualBlob);
}
}
return new BlobReader(new MemoryBlock((byte*)virtualBlob.Pinned.AddrOfPinnedObject(), length));
}
int offset, size;
Block.PeekHeapValueOffsetAndSize(handle.Index, out offset, out size);
return new BlobReader(this.Block.GetMemoryBlockAt(offset, size));
}