public static ParameterExpression GetOrCreateParameter(this Type type, string name = null) { var cache = GlobalContext.Instance.Cache.CreateScoped <TypeKey, ParameterExpression>(); var parameter = cache.GetOrAdd( TypeKey.ForParameter(type, name), key => Parameters.Create(key.Type, key.Name)); return(parameter); }
public static ParameterExpression GetOrCreateParameter(this Type type, string name = null) { if (type == null) { return(null); } var cache = GlobalContext.Instance .Cache .CreateScoped <TypeKey, ParameterExpression>(default(HashCodeComparer <TypeKey>)); var parameter = cache.GetOrAdd( TypeKey.ForParameter(type, name), key => Parameters.Create(key.Type, key.Name)); return(parameter); }