Exemplo n.º 1
0
            private void EnsureInit()
            {
                if (_init)
                {
                    return;
                }
                _init = true;

                string rootDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

                if (string.IsNullOrEmpty(rootDirectory))
                {
                    throw new DirectoryNotFoundException("The root of the directory for module discovery is not found.");
                }
                ModuleAssembly = Assembly.LoadFile(Path.Combine(rootDirectory, $"{AssemblyName}.dll"));
                Type[] moduleAllTypes = ModuleAssembly.GetTypes();

                foreach (Type type in moduleAllTypes)
                {
                    if (typeof(IModuleController).IsAssignableFrom(type))
                    {
                        ModuleController = type;
                        continue;
                    }

                    if (type.GetCustomAttribute <ServiceAttribute>() != null)
                    {
                        _services.Add(new ServiceInfo(type));
                    }
                }
            }
Exemplo n.º 2
0
        private static ModuleAssembly CreateExperimentalModule(LayerAssembly layer)
        {
            ModuleAssembly module = layer.NewModuleAssembly("ExperimentalModule");

            module
            .AddEntities()
            .VisibleIn(Visibility.Module);

            module
            .AddServices()
            .Include <CustomerRepositoryService>()
            .WithConcern <GenericTracingConcern>()
            .VisibleIn(Visibility.Layer);

            module
            .AddValues()
            .Include <AddressValue>();

            module
            .AddTransients()
            .Include <CustomerTransient>()
            .Include <ContactTransient>()
            .WithConcern <GenericTracingConcern>()
            //  .WithConcern<SayHelloConcern>()
            .WithSideEffect <SayHelloSideEffect>();

            return(module);
        }
Exemplo n.º 3
0
        private static LayerAssembly CreateDomainLayer(ApplicationAssembly app)
        {
            LayerAssembly layer = app.NewLayerAssembly("DomainLayer");

            ModuleAssembly experimentalModule = CreateExperimentalModule(layer);

            return(layer);
        }
Exemplo n.º 4
0
        private static LayerAssembly CreateDomainLayer(ApplicationAssembly app)
        {
            LayerAssembly layer = app.NewLayerAssembly("DomainLayer");

            ModuleAssembly shapeModule = CreateShapeModule(layer);

            return(layer);
        }
 public bool Equals(ModuleDescriptor obj, VersionToleranceLevel versionToleranceLevel)
 {
     if (versionToleranceLevel.HasFlag(VersionToleranceLevel.AllowGuidChange))
     {
         return(obj != null && obj.Name == Name && ModuleAssembly.Equals(obj.ModuleAssembly, versionToleranceLevel));
     }
     return(obj != null && obj.GUID == GUID && ModuleAssembly.Equals(obj.ModuleAssembly, versionToleranceLevel));
 }
Exemplo n.º 6
0
        /// <summary>
        ///     Execute the task.
        /// </summary>
        /// <returns>
        ///     <c>true</c>, if the task executed succesfully; otherwise, <c>false</c>.
        /// </returns>
        public override bool Execute()
        {
            FileInfo moduleAssemblyFile = new FileInfo(
                ModuleAssembly.GetMetadata("FullPath")
                );

            Log.LogMessage(MessageImportance.Low, "Scanning assembly '{0}'...",
                           moduleAssemblyFile.FullName
                           );

            DirectoryAssemblyLoadContext assemblyLoadContext = new DirectoryAssemblyLoadContext(
                fallbackDirectory: moduleAssemblyFile.Directory.FullName
                );

            HelpItems     help      = new HelpItems();
            MamlGenerator generator = new MamlGenerator();

            Assembly moduleAssembly = assemblyLoadContext.LoadFromAssemblyPath(moduleAssemblyFile.FullName);

            foreach (Type cmdletType in Reflector.GetCmdletTypes(moduleAssembly))
            {
                CmdletAttribute cmdletAttribute = cmdletType.GetTypeInfo().GetCustomAttribute <CmdletAttribute>();

                Log.LogMessage(MessageImportance.Low, "Generating help for cmdlet '{0}-{1}' ('{2}').",
                               cmdletAttribute.VerbName,
                               cmdletAttribute.NounName,
                               cmdletType.FullName
                               );

                help.Commands.Add(
                    generator.Generate(cmdletType)
                    );
            }

            FileInfo helpFile = new FileInfo(
                HelpFile.GetMetadata("FullPath")
                );

            if (helpFile.Exists)
            {
                helpFile.Delete();
            }

            using (StreamWriter writer = helpFile.CreateText())
            {
                help.WriteTo(writer);
            }

            Log.LogMessage(MessageImportance.Normal, "'{0}' -> '{1}'",
                           moduleAssemblyFile.Name,
                           helpFile.Name
                           );

            return(true);
        }
        public override bool Equals(object obj)
        {
            if (obj == null || obj.GetType() != typeof(ModuleDescriptor))
            {
                return(false);
            }
            if (ReferenceEquals(this, obj))
            {
                return(true);
            }
            ModuleDescriptor other = (ModuleDescriptor)obj;

            return(Name == other.Name && GUID == other.GUID && ModuleAssembly.Equals(other.ModuleAssembly));
        }
Exemplo n.º 8
0
        private static ModuleAssembly CreateShapeModule(LayerAssembly layer)
        {
            ModuleAssembly module = layer.NewModuleAssembly("ShapeModule");

            module.AddTransients()
            .Include <DrawingService>();
            module
            .AddTransients()
            .Include <RectangleShape>()
            .Include <EllipseShape>()
            .Include <LineShape>()
            .Include <SplineShape>()
            //.Include<DescriptionTransient>()
            .Include <GroupShape>()
            ;

            return(module);
        }
 public override int GetHashCode()
 {
     unchecked
     {
         return((Name != null ? Name.GetHashCode() : 0) ^ GUID.GetHashCode() ^ (ModuleAssembly != null ? ModuleAssembly.GetHashCode() : 0));
     }
 }