private void InitDiscovery() { if (_discoveredParts != null) { return; } var types = _configuration.DebugGetRegisteredTypes(); var defaultAttributeContext = _configuration.DebugGetDefaultAttributeContext() ?? new DirectAttributeContext(); var discovered = new List <DiscoveredPart>(); var ignored = new List <Type>(); foreach (var typeSet in types) { var ac = typeSet.Item2 ?? defaultAttributeContext; var activationFeatures = TypedPartExportDescriptorProvider.DebugGetActivationFeatures(ac); var inspector = new TypeInspector(ac, activationFeatures); foreach (var type in typeSet.Item1) { DiscoveredPart part; if (inspector.InspectTypeForPart(type.GetTypeInfo(), out part)) { discovered.Add(part); } else { ignored.Add(type); } } } _discoveredParts = discovered.ToArray(); _ignoredTypes = ignored.ToArray(); }
public TypedPartExportDescriptorProvider(IEnumerable <Type> types, AttributedModelProvider attributeContext) { var activationFeatures = CreateActivationFeatures(attributeContext); var typeInspector = new TypeInspector(attributeContext, activationFeatures); foreach (var type in types) { DiscoveredPart part; if (typeInspector.InspectTypeForPart(type.GetTypeInfo(), out part)) { AddDiscoveredPart(part); } } }