EncodeToken() public method

public EncodeToken ( MetadataToken token ) : uint
token MetadataToken
return uint
Exemplo n.º 1
0
        protected override void Initialize()
        {
            if (_owner.Header != null && _indexEncoder != null)
            {
                var stream         = _owner.Header.GetStream <TableStream>();
                var attributeTable = stream.GetTable <TItem>();
                if (attributeTable != null)
                {
                    uint key    = _indexEncoder.EncodeToken(_owner.MetadataToken);
                    var  member = attributeTable.GetMemberByKey(_columnIndex, key);

                    if (member != null)
                    {
                        int startIndex = (int)member.MetadataToken.Rid - 1;
                        while (startIndex > 0 && Convert.ToUInt32(attributeTable[startIndex - 1].MetadataRow.GetAllColumns().ElementAt(_columnIndex)) == key)
                        {
                            startIndex--;
                        }

                        for (int index = startIndex; index < attributeTable.Count; index++)
                        {
                            var item = attributeTable[index];
                            if (Convert.ToUInt32(item.MetadataRow.GetAllColumns().ElementAt(_columnIndex)) != key)
                            {
                                break;
                            }
                            Items.Add(item);
                        }
                    }
                }
            }

            base.Initialize();
        }