public static bool ComparePublicKeyOrTokens(ByteCollection keyOrToken1, bool isKey1, ByteCollection keyOrToken2, bool isKey2)
        {
            if (isKey1 != isKey2)
            {
                // Convert both to PublicKeyToken byte[] and compare

                byte[] token1 = ConvertByteCollectionKeyOrTokenToPublicKeyTokenByteArray(keyOrToken1, isKey1);
                byte[] token2 = ConvertByteCollectionKeyOrTokenToPublicKeyTokenByteArray(keyOrToken2, isKey2);

                if (token1.Length != token2.Length)
                {
                    return(false);
                }

                for (int i = 0; i < token1.Length; i++)
                {
                    if (token1[i] != token2[i])
                    {
                        return(false);
                    }
                }

                return(true);
            }

            var enum1 = keyOrToken1.GetEnumerator();
            var enum2 = keyOrToken1.GetEnumerator();

            while (true)
            {
                bool moveNext1 = enum1.MoveNext();
                if (enum2.MoveNext() != moveNext1)
                {
                    return(false);
                }

                if (moveNext1 == false)
                {
                    break;
                }

                if (enum1.Current != enum2.Current)
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #2
0
        public static bool ComparePublicKeyOrTokens(ByteCollection keyOrToken1, bool isKey1, ByteCollection keyOrToken2, bool isKey2)
        {
            if (isKey1 != isKey2)
            {
                // Convert both to PublicKeyToken byte[] and compare

                byte[] token1 = ConvertByteCollectionKeyOrTokenToPublicKeyTokenByteArray(keyOrToken1, isKey1);
                byte[] token2 = ConvertByteCollectionKeyOrTokenToPublicKeyTokenByteArray(keyOrToken2, isKey2);

                if (token1.Length != token2.Length)
                    return false;

                for (int i = 0; i < token1.Length; i++)
                {
                    if (token1[i] != token2[i])
                        return false;
                }

                return true;
            }

            var enum1 = keyOrToken1.GetEnumerator();
            var enum2 = keyOrToken1.GetEnumerator();

            while (true)
            {
                bool moveNext1 = enum1.MoveNext();
                if (enum2.MoveNext() != moveNext1)
                    return false;

                if (moveNext1 == false)
                    break;

                if (enum1.Current != enum2.Current)
                    return false;
            }

            return true;
        }