Example #1
0
        public PageMetadataProviderTests()
        {
            var contentTypeResolver    = new AssemblyContentTypeLocator(new System.Reflection.Assembly[] { typeof(TestPageContent).Assembly });
            var contentMetadataManager = new ContentMetadataManager(contentTypeResolver);

            pageMetadataManager = new PageMetadataManager(contentMetadataManager);
        }
Example #2
0
        protected override void OnInitialize()
        {
            var valueType = ValueType;

            IsListValue = ListInterfaceType.IsAssignableFrom(valueType);

            Type contentType;

            if (IsListValue)
            {
                if (!valueType.IsGenericType || valueType.GetGenericTypeDefinition() != ListGenericTypeDefinition)
                {
                    throw new InvalidOperationException();
                }

                listConstructor = valueType.GetConstructor(BindingFlags.Instance | BindingFlags.Public, null, new Type[0], null);
                if (listConstructor == null)
                {
                    throw new InvalidOperationException();
                }

                contentType = valueType.GenericTypeArguments[0];
            }
            else
            {
                contentType = valueType;
            }

            if (!ContentMetadataManager.TypeIsContent(contentType.GetTypeInfo()))
            {
                throw new InvalidOperationException();
            }

            if (!ContentMetadata.Manager.TryGetMetadata(contentType, out ContentMetadataProvider contentMetadata))
            {
                throw new InvalidOperationException();
            }
            ValueContentMetadata = contentMetadata;
        }
        public AssemblyContentTypeLocator(Assembly[] assemblies)
        {
            if (assemblies == null)
            {
                throw new ArgumentNullException(nameof(assemblies));
            }

            foreach (var assembly in assemblies)
            {
                foreach (var type in assembly.GetTypes())
                {
                    var typeInfo = type.GetTypeInfo();

                    if (!ContentMetadataManager.TypeIsContent(typeInfo) || types.Contains(typeInfo))
                    {
                        continue;
                    }

                    types.Add(typeInfo);
                }
            }
        }