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)); } } }
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); }
private static LayerAssembly CreateDomainLayer(ApplicationAssembly app) { LayerAssembly layer = app.NewLayerAssembly("DomainLayer"); ModuleAssembly experimentalModule = CreateExperimentalModule(layer); return(layer); }
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)); }
/// <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)); }
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)); } }