示例#1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="Compiler">The compiler.</param>
 /// <param name="Aspects">The aspects.</param>
 /// <param name="Modules">The modules.</param>
 public Manager(Compiler Compiler, IEnumerable <IAspect> Aspects, IEnumerable <IAOPModule> Modules)
 {
     Contract.Requires <ArgumentNullException>(Compiler != null, "Compiler");
     Contract.Requires <ArgumentNullException>(Compiler.Classes != null, "Compiler.Classes");
     Contract.Requires <ArgumentNullException>(Aspects != null, "Aspects");
     Contract.Requires <ArgumentNullException>(Modules != null, "Modules");
     Manager.Compiler = Compiler;
     if (Manager.Aspects.Count == 0)
     {
         Manager.Aspects.Add(Aspects);
     }
     Compiler.Classes.ForEachParallel(x => Classes.AddOrUpdate(x.BaseType, y => x, (y, z) => x));
     Modules.ForEachParallel(x => x.Setup(this));
 }