コード例 #1
0
        void Write(BinaryWriter writer, MethodSig sig)
        {
            writer.Write((byte)ObjectType.MethodSig);
            writer.Write((byte)(sig == null ? 0 : sig.GetCallingConvention()));
            Write(writer, sig.GetRetType());
            foreach (var p in sig.GetParams())
            {
                Write(writer, p);
            }
            writer.Write(sig.GetParamCount());
            bool hasParamsAfterSentinel = sig.GetParamsAfterSentinel() != null;

            writer.Write(hasParamsAfterSentinel);
            if (hasParamsAfterSentinel)
            {
                foreach (var p in sig.GetParamsAfterSentinel())
                {
                    Write(writer, p);
                }
            }
        }
コード例 #2
0
        void Hash(MethodSig sig)
        {
            if (sig == null)
            {
                return;
            }

            hasher.Hash((byte)sig.GetCallingConvention());
            Hash(sig.GetRetType());
            foreach (var p in sig.GetParams())
            {
                Hash(p);
            }
            hasher.Hash(sig.GetParamCount());
            if (sig.GetParamsAfterSentinel() != null)
            {
                foreach (var p in sig.GetParamsAfterSentinel())
                {
                    Hash(p);
                }
            }
        }