private ModelMeta EnsureModelDictionaryEntryExists()

in src/DeloitteDigital.Atlas/Mapping/ItemMapper.cs [54:80]


        private ModelMeta EnsureModelDictionaryEntryExists<TModel>(IDictionary<string, ModelMeta> metadataDictionary)
        {
            var modelType = typeof(TModel);
            var modelMetaKey = modelType.AssemblyQualifiedName;
            ModelMeta tmp = null;

            if (metadataDictionary.TryGetValue(modelMetaKey, out tmp))
            {
                return tmp;
            }

            lock (MetaSyncRoot)
            {
                if (metadataDictionary.TryGetValue(modelMetaKey, out tmp))
                {
                    return tmp;
                }

                var modelMeta = new ModelMeta();
                var propertyMetaBuilder = new PropertyMetaBuilder();

                modelMeta.PropertyMap = propertyMetaBuilder.BuildPropertyMetaMap<TModel>();
                metadataDictionary.Add(modelMetaKey, modelMeta);

                return modelMeta;
            }
        }