public static uint GetMethodId(this MethodInfo methodInfo) { var stringValue = methodInfo.Name + GetInvariantFullName(methodInfo.ReturnParameter?.ParameterType) + string.Join("", methodInfo.GetParameters() .Select(x => x.Position.ToString() + GetInvariantFullName(x.ParameterType))); return(MurmurHash.Hash(stringValue)); }
public static ulong GetEventId(this EventInfo eventInfo, Type interfaceType, uint sessionId) { var stringBuilder = new StringBuilder(); stringBuilder.Append(eventInfo.Name); stringBuilder.Append(eventInfo.EventHandlerType.Name); stringBuilder.Append(eventInfo.EventHandlerType.Namespace); foreach (var genericTypeArgument in eventInfo.EventHandlerType.GenericTypeArguments) { stringBuilder.Append(genericTypeArgument); } stringBuilder.Append(interfaceType.Name); return((MurmurHash.Hash(stringBuilder.ToString()) << 32) | sessionId); }