Esempio n. 1
0
        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?
                };
            }
        }
Esempio n. 2
0
 private void EnqueueUnprocessedTypes(ITypeRegistry types)
 {
     foreach (INamedType type in types.GetTypes())
     {
         if (!_registered.Contains(type.Name))
         {
             _queue.Enqueue(type);
         }
     }
 }