public static Type ResolveDynamicTypeByInteropId(Guid id) { if (!_types.ContainsKey(id)) { try { var contentTypeRepo = new ContentTypeMetadataRepository(); var contentTypeMetadata = contentTypeRepo.Find().Single(x => x.TypeResolverId == id); Type repoType; if (!string.IsNullOrWhiteSpace(contentTypeMetadata.CustomAssemblyQualifiedTypeName)) { repoType = Type.GetType(contentTypeMetadata.CustomAssemblyQualifiedTypeName); } else { repoType = Type.GetType(contentTypeMetadata.AssemblyQualifiedTypeName); } _types.Add(id, repoType); } catch (Exception) { var entityType = WarpCoreIlGenerator.CreateDynamicContentEntity(id); _types.Add(id, entityType); } } return(_types[id]); }
public DynamicTypeDefinition Resolve(Guid uid) { if (_definitions.ContainsKey(uid)) { return(_definitions[uid]); } var typeExtensions = new ContentInterfaceRepository().Find().Where(x => x.ContentTypeId == uid); var metadata = new ContentTypeMetadataRepository().Find().Where(x => x.TypeResolverId == uid).SingleOrDefault(); var dtd = new DynamicTypeDefinition(); dtd.TitleProperty = metadata?.TitleProperty; foreach (var extension in typeExtensions) { dtd.DynamicProperties.AddRange(extension.InterfaceFields); } _definitions.Add(uid, dtd); return(_definitions[uid]); }