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]);
        }