public PageMetadataProviderTests() { var contentTypeResolver = new AssemblyContentTypeLocator(new System.Reflection.Assembly[] { typeof(TestPageContent).Assembly }); var contentMetadataManager = new ContentMetadataManager(contentTypeResolver); pageMetadataManager = new PageMetadataManager(contentMetadataManager); }
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); } } }