Exemple #1
0
 public DependencyProvider(DependencyConfiguration dependencyConfiguration)
 {
     if (ValidateConfigurationOrThrowException(dependencyConfiguration))
     {
         _dependencyConfiguration = dependencyConfiguration;
         _singletonCache          = new Dictionary <Type, object>();
     }
 }
Exemple #2
0
 ///<summary>
 /// Throws exception when regestered implementation does nor inherit from corresponding abstraction
 ///    </summary>
 private bool ValidateConfigurationOrThrowException(DependencyConfiguration configuration)
 {
     foreach (var dc in configuration.Configurations)
     {
         var abstractionType = dc.Key;
         foreach (var implementationTypeDef in dc.Value)
         {
             if (!(((abstractionType.IsClass) || (abstractionType.IsInterface)) &&
                   ((implementationTypeDef.Type.BaseType == abstractionType) ||
                    (implementationTypeDef.Type.GetInterface(abstractionType.Name) != null) ||
                    (implementationTypeDef.Type == abstractionType)
                   )
                   ))
             {
                 throw new IneligibleImplementationException
                           (String.Format("Type {0} is ineligble implementation for type {1}.", implementationTypeDef.Type.Name, abstractionType.Name));
             }
         }
     }
     return(true);
 }