示例#1
0
 public DependencyProvider(DependencyConfiguration dependencyConfiguration)
 {
     if (Validate(dependencyConfiguration))
     {
         this.dependencyConfiguration = dependencyConfiguration;
         Implementations = new ConcurrentStack <Type>();
     }
     else
     {
         throw new Exception("Dependency Configuration is not valid");
     }
 }
示例#2
0
 private bool Validate(DependencyConfiguration dependencyConfiguration)
 {
     if (dependencyConfiguration != null)
     {
         foreach (var kvpair in dependencyConfiguration.Configuration)
         {
             foreach (var confType in kvpair.Value)
             {
                 if (confType.Implementation.IsAbstract || confType.Implementation.IsInterface || !confType.ImplementationInterface.IsAssignableFrom(confType.Implementation))
                 {
                     return(false);
                 }
             }
         }
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#3
0
        static void Main(string[] args)
        {
            DependencyConfiguration dc = new DependencyConfiguration();

            dc.Register <IBar, BarFromIBar>();
            dc.Register <ABar, BarFromABar>();
            dc.Register <IFoo, Foo>();

            DependencyProvider dp = new DependencyProvider(dc);

            var foo = dp.Resolve <IFoo>();

            DependencyConfiguration newDC = new DependencyConfiguration();

            newDC.Register <IBar, BarFromIBar>();
            newDC.Register <IBar, BarFromABar>();

            DependencyProvider newDP = new DependencyProvider(newDC);
            var bars = newDP.ResolveAll <IBar>();

            Console.WriteLine(bars.Count());

            Console.ReadLine();
        }