Esempio n. 1
0
        private Type DemandSourceContextDeep(Type sourceType)
        {
            if (SourceContexts.Length == 0)
            {
                throw new DittoConfigurationException(
                          "Sources have not been setup for '{0}'. Did you forget to call 'From'?", DestinationType);
            }

            if (SourceContexts.Any(its => its.SourceType == sourceType)) //this gives a little perf boost
            {
                return(sourceType);
            }
            Type discovered;

            if (source2AlternateTypes.TryGetValue(sourceType, out discovered))
            {
                return(discovered);
            }
            var deepThots = new SourceContextDiscovery(sourceType);
            var context   = SourceContexts.FirstOrDefault(deepThots.IsSatisfiedBy);

            if (context != null)
            {
                source2AlternateTypes[sourceType] = deepThots.TypeToUse;
                return(deepThots.TypeToUse);
            }

            throw new DittoConfigurationException("'{0}' has not been setup as a source for '{1}'.", sourceType,
                                                  DestinationType);
        }
Esempio n. 2
0
        public MissingProperties Validate()
        {
            var validator = new ConfigurationValidator(DestinationType,
                                                       DestinationProperties,
                                                       SourceContexts.Concat <IContainResolvers>(SourcedConventions).ToArray());

            return(validator.Validate());
        }
Esempio n. 3
0
        public void PushSourceContext(SourceContext sourceContext)
        {
            if (_sourceContexts == null)
            {
                _sourceContexts = new SourceContexts();
            }

            _sourceContexts.Push(sourceContext);
        }
Esempio n. 4
0
 public void Bind(params ICreateExecutableMapping[] configurations)
 {
     foreach (var sourceContext in SourceContexts.OfType <IBindable>())
     {
         sourceContext.Bind(configurations);
     }
     foreach (var sourcedConvention in SourcedConventions)
     {
         sourcedConvention.Bind(configurations);
     }
 }
Esempio n. 5
0
 public void Accept(IVisitCacheable visitor)
 {
     foreach (var sourceContext in SourceContexts.OfType <ICacheable>())
     {
         sourceContext.Accept(visitor);
     }
     foreach (var cachedDestinationProp in DestinationProperties.OfType <ICacheable>())
     {
         cachedDestinationProp.Accept(visitor);
     }
     visitor.Visit(this);
 }