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); } } }
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); } } }