示例#1
0
 public static bool TryGetBinaryConverter(Type typeToSerialize, out BinaryConverterBase result)
 {
     if (typeToSerialize == null)
     {
         throw new NullReferenceException($"The parameter '{nameof(typeToSerialize)}' can't be null.");
     }
     return(SerializationPlansCachedByEveryTypeHachcode.TryGetValue(typeToSerialize.GetHashCode(), out result));
 }
示例#2
0
        public static void SetSerializePlan(Type typeToSerialize, BinaryConverterBase value)
        {
            BinaryConverterBase result;

            if (!SerializationPlansCachedByEveryTypeHachcode.TryGetValue(typeToSerialize.GetHashCode(), out result))
            {
                if (typeToSerialize == null)
                {
                    throw new NullReferenceException($"The parameter '{nameof(typeToSerialize)}' can't be null.");
                }

                lock (SerializationPlansCachedByEveryTypeHachcode_Copy)
                {
                    if (!SerializationPlansCachedByEveryTypeHachcode_Copy.ContainsKey(typeToSerialize.GetHashCode()))
                    {
                        SerializationPlansCachedByEveryTypeHachcode_Copy[typeToSerialize.GetHashCode()] = value;
                        SerializationPlansCachedByEveryTypeHachcode = SerializationPlansCachedByEveryTypeHachcode_Copy.ToDictionary(item => item.Key, item => item.Value);
                    }
                }
            }
        }