private ClassMetadata LoadMetadataFromType(Type entityType) { var classMappingAttr = entityType.GetCustomAttributes(typeof(ClassMappingAttribute), false).SingleOrDefault(); var typeFactoryAttr = entityType.GetCustomAttributes(typeof(TypeFactoryAttribute), false).SingleOrDefault(); var classMetadata = new ClassMetadata(); if (classMappingAttr != null) { classMetadata.ClassMapping = Activator.CreateInstance((classMappingAttr as ClassMappingAttribute).Value); if (typeFactoryAttr != null) { classMetadata.TypeFactory = Activator.CreateInstance((typeFactoryAttr as TypeFactoryAttribute).FactoryType) as ITypeFactory; } ClassMetadataCache.Add(entityType, classMetadata); } return(classMetadata); }
private ClassMetadata GetMetadata(Type entityType) { var classMetadata = ClassMetadataCache.GetCacheEntry(entityType); return(classMetadata != null ? classMetadata : LoadMetadataFromType(entityType)); }