private void CompleteAbstractTypeResolver( ITypeRegistry typeRegistry) { if (_resolveAbstractType == null) { // if there is now custom type resolver we will use this default // abstract type resolver. List <ObjectType> types = null; _resolveAbstractType = (c, r) => { if (types == null) { types = typeRegistry.GetTypes() .OfType <ObjectType>() .Where(t => t.Interfaces.ContainsKey(Name)) .ToList(); } foreach (ObjectType type in types) { if (type.IsOfType(c, r)) { return(type); } } return(null); // todo: should we throw instead? }; } }
private void EnqueueUnprocessedTypes(ITypeRegistry types) { foreach (INamedType type in types.GetTypes()) { if (!_registered.Contains(type.Name)) { _queue.Enqueue(type); } } }