/// <summary> /// Creates a handle from a token value. /// </summary> /// <exception cref="ArgumentException"> /// <paramref name="token"/> is not a valid metadata token. /// It must encode a metadata table entity or an offset in <see cref="HandleKind.UserString"/> heap. /// </exception> public static Handle Handle(int token) { if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked ((uint)token))) { Throw.InvalidToken(); } return(Metadata.Handle.FromVToken((uint)token)); }
/// <summary> /// Creates an <see cref="Metadata.EntityHandle"/> from a token value. /// </summary> /// <exception cref="ArgumentException"> /// <paramref name="tableIndex"/> is not a valid table index.</exception> public static EntityHandle Handle(TableIndex tableIndex, int rowNumber) { int token = ((int)tableIndex << TokenTypeIds.RowIdBitCount) | rowNumber; if (!TokenTypeIds.IsEntityOrUserStringToken(unchecked ((uint)token))) { Throw.TableIndexOutOfRange(); } return(new EntityHandle((uint)token)); }