protected virtual ParameterExpression GetParameter(Type type, string name) { var key = KeyMaker.GetHashCode(type, name); ParameterExpression result = null; if (!_params.TryGetValue(key, out result)) { result = Expression.Parameter(type, name); _params[key] = result; } return(result); }
protected void AddHash(object item) { if (item is TypeInfo type) { var h = type.Name.GetHashCode(); var hashType = type.UnderlyingSystemType; if (hashType != null && hashType.AssemblyQualifiedName != null) { h = KeyMaker.AddHashCode(h, hashType.AssemblyQualifiedName.GetHashCode()); } Hash = KeyMaker.AddHashCode(Hash, h); } if (item is MemberInfo member) { var h = member.Name.GetHashCode(); var hashType = member.DeclaringType; if (hashType != null && hashType.AssemblyQualifiedName != null) { h = KeyMaker.AddHashCode(h, hashType.AssemblyQualifiedName.GetHashCode()); } Hash = KeyMaker.AddHashCode(Hash, h); return; } if (item == null) { Hash = KeyMaker.AddHashCode(Hash, NullHashCode); } else { Hash = KeyMaker.AddHashCode(Hash, KeyMaker.GetHashCode(item)); } }