public virtual void Process(Type @class, TPrinter printer) { // NOTE: CHANGE IT!!! AssemblySelector selector = AssemblySelector.Get(@class.Assembly); ClassInclude defaultClassInclude = selector.GetClassInclude(@class, printer.Diagram); ClassSelector classSelector = ClassSelector.Get(@class, defaultClassInclude); printer.BeginClass(ModelUtils.ToClassType(@class), PlantUmlUtils.GetSimpleName(@class), PlantUmlUtils.GetGenerics(@class), PlantUmlUtils.GetStereotypes(@class)?.ToArray()); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetConstructors(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetMethods(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetProperties(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetEvents(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetFields(@class), printer); printer.EndClass(); //this.ProcessNestedIfChecked(classSelector, ModelUtils.GetNestedTypes(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetGeneralizations(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetAssociations(@class), printer); this.ProcessMembersIfChecked(classSelector, ModelUtils.GetDependencies(@class), printer); }
public static void RegistrationByConvention(this Container container, BehaviorConfiguration configuration, Action<IConventionBuilderSyntax<Lifestyle, Container>> convention) { if (configuration == null) { configuration = BehaviorConfiguration.Default; } var logger = new DiagnosticLogger(configuration); var serviceMappingTracker = new ServiceMappingTracker(logger); var implementationFilter = new ImplementationFilter(); var adapter = new SimpleInjectorContainerAdapter(container, serviceMappingTracker, implementationFilter); var configServiceFilter = ((IBehaviorConfiguration)configuration).GetServiceFilter(); var asmSelector = new AssemblySelector(); var serviceExtractor = new ServiceExtractor(); var containerDecorator = new ContainerLogger<Lifestyle>(adapter, logger); var serviceFilterAggregator = new ServiceFilterAggregator(new IServiceFilter[] { configServiceFilter, implementationFilter, serviceExtractor, serviceMappingTracker }); using (var builder = new ConventionBuilder<Lifestyle>(containerDecorator, asmSelector, serviceFilterAggregator, serviceExtractor)) { var importer = new ConventionBuilderSyntaxDecorator<Lifestyle, Container>(builder, container, implementationFilter, asmSelector); convention(importer); } }
private static void ObfuscateWhileLocked() { if (_options == null) { _options = OptionsManager.LoadOptions(); } Obfuscator.FixHexBug(_options); if (ShouldObfuscate() == false) { return; } AssemblySelector selector = new AssemblySelector(_options); ICollection <string> compiledDlls = selector.GetCompiledAssemblyPaths(); BackupDlls(compiledDlls); ICollection <string> dlls = selector.GetAssemblyPaths(); if (dlls.Count == 0 && compiledDlls.Count == 0) { _noCSharpScripts = true; } else { HashSet <string> extraAssemblyReferenceDirectories = new HashSet <string>(_options.extraAssemblyDirectories); #if UNITY_2017_3_OR_NEWER extraAssemblyReferenceDirectories.UnionWith(AssemblyReferenceLocator.GetAssemblyReferenceDirectories()); #endif Obfuscator.SetExtraAssemblyDirectories(extraAssemblyReferenceDirectories.ToArray()); #if UNITY_2018_2_OR_NEWER if (_options.obfuscateMonoBehaviourClassNames) { Debug.LogError( "The mechanism to obfuscate MonoBehaviour class names no longer works since Unity " + "2018.2. You must either roll back to 2018.1, or disable this option.\n" + "\nThis build will be obfuscated as instructed, but you are likely to see " + "NullReferenceException runtime errors.\n"); } #endif Obfuscator.Obfuscate(dlls, compiledDlls, _options, EditorUserBuildSettings.activeBuildTarget); if (_options.obfuscateMonoBehaviourClassNames) { /* * RestoreAssets must be called via the update delegate because [PostProcessBuild] is not guaranteed to be called */ EditorApplication.update += RestoreAssets; _monoBehaviourAssetsNeedReverting = true; } _obfuscatedAfterScene = true; } }
public static IServiceCollection AddAllDDDHandlers( this IServiceCollection services, ServiceLifetime withLifetime = ServiceLifetime.Transient, AssemblySelector from = AssemblySelector.ApplicationDependencies) { return(services .AddAllCommandHandlers(withLifetime, from) .AddAllQueryHandlers(withLifetime, from) .AddAllEventHandlers(withLifetime, from)); }
public static IServiceCollection AddAllQueryHandlers( this IServiceCollection services, ServiceLifetime withLifetime = ServiceLifetime.Transient, AssemblySelector from = AssemblySelector.ApplicationDependencies) { services.Scan(scan => scan .FromAssemblies(from) .AddClasses(classes => classes.AssignableTo(typeof(IQueryHandler <,>)).Where(c => !c.IsAbstract && !c.IsGenericTypeDefinition)) .AsSelfWithInterfaces() .WithLifetime(withLifetime) ); return(services); }
public static IImplementationTypeSelector FromAssemblies(this IAssemblySelector assemblySelector, AssemblySelector assemblySelection = AssemblySelector.ApplicationDependencies) { switch (assemblySelection) { case AssemblySelector.ApplicationDependencies: return(assemblySelector.FromApplicationDependencies()); case AssemblySelector.CallingAssembly: return(assemblySelector.FromCallingAssembly()); default: throw new ArgumentOutOfRangeException(nameof(assemblySelection), assemblySelection, $"Value {assemblySelection} is not supported"); } }
/// <summary> /// Adds registrations to the <paramref name="services"/> collection using /// conventions specified using the <paramref name="action"/>. /// </summary> /// <param name="services">The services to add to.</param> /// <param name="action">The configuration action.</param> /// <exception cref="System.ArgumentNullException">If either the <paramref name="services"/> /// or <paramref name="action"/> arguments are <c>null</c>.</exception> public static IServiceCollection Scan(this IServiceCollection services, Action<IAssemblySelector> action) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (action == null) { throw new ArgumentNullException(nameof(action)); } var selector = new AssemblySelector(); action(selector); return services.Populate(selector); }
/** * When assemblies are declared in the 'Compiled Assemblies' list within Obfuscator options then before any * obfuscation they are temporarily backed up then operated on. This method is then called after obfuscation * to restore the original assembly and remove the backup. */ public static void RestoreOriginalDlls() { try { Options options = OptionsManager.LoadOptionsIgnoringInstallFiles(); if (options == null || options.compiledAssemblies.Length == 0) { return; } ICollection <string> compiledAssemblyPaths = new AssemblySelector(options).GetCompiledAssemblyPaths(); IDictionary <string, string> backupMap = FileBackup.GetBackupMap(compiledAssemblyPaths); //DLLs declared within 'Compiled Assemblies' will be restored from this method. FileBackup.Restore(backupMap); } finally { EditorApplication.update -= RestoreOriginalDlls; } }
//, IEnumerable<Type> serviceExclusions = null) public static void RegistrationByConvention(this UnityContainer container, BehaviorConfiguration configuration, Action<IConventionBuilder<LifetimeManager>, IImplementationFilter> convention) { if (configuration == null) { configuration = BehaviorConfiguration.Default; } var logger = new DiagnosticLogger(configuration); var serviceMappingTracker = new ServiceMappingTracker(logger); var implementationFilter = new ImplementationFilter(); var configServiceFilter = ((IBehaviorConfiguration)configuration).GetServiceFilter(); var adapter = new UnityContainerAdapter(container, serviceMappingTracker); var asmSelector = new AssemblySelector(); var serviceExtractor = new ServiceExtractor(); var serviceFilterAggregator = new ServiceFilterAggregator(new IServiceFilter[] { configServiceFilter, implementationFilter, serviceExtractor, serviceMappingTracker }); using (var builder = new ConventionBuilder<LifetimeManager>(adapter, asmSelector, serviceFilterAggregator, serviceExtractor)) { convention(builder, implementationFilter); } }
public virtual void Process(Assembly assembly, TPrinter printer) { AssemblySelector selector = AssemblySelector.Get(assembly); // Check in which diagram can be used. foreach (string diagram in selector.GetDiagrams()) { printer.BeginDiagram(diagram); foreach (Type @class in assembly.DefinedTypes.Where(@class => [email protected]())) { ClassSelector classSelector = ClassSelector.Get(@class); // Is pointed out with a 'DiagramAttribute' OR 'ClassDiagramAttribute'. if (selector.Check(@class, diagram) || classSelector.GetClassInclude(diagram) != ClassInclude.None) { this.provider.GetProcessor <Type>().Process(@class, printer); } } printer.EndDiagram(); } }
public void FromAssembliesMatching_RegexPatternsNullValueGiven_ShouldThrowArgumentNullException() { var assemblySelector = new AssemblySelector(); assemblySelector.FromAssembliesMatching(null); }
public void FromAssemblyContaining_IEnumerableType_TypesNullValueGiven_ShouldThrowArgumentNullException() { var assemblySelector = new AssemblySelector(); assemblySelector.FromAssemblyContaining((IEnumerable<Type>)null); }
public void FromAssemblyContaining_TypeArray_TypesNullValueGiven_ShouldThrowArgumentNullException() { var assemblySelector = new AssemblySelector(); assemblySelector.FromAssemblyContaining((Type[])null); }
public void From_StringArray_AssembliesNullValueGiven_ShouldThrowArgumentNullException() { var assemblySelector = new AssemblySelector(); assemblySelector.From((String[])null); }
public void From_IEnumerableString_AssembliesNullValueGiven_ShouldThrowArgumentNullException() { var assemblySelector = new AssemblySelector(); assemblySelector.From((IEnumerable<string>)null); }
private void ObfuscateWhileLocked() { if (_options == null) { _options = OptionsManager.LoadOptions(); } if (ShouldObfuscate() == false) { return; } AssemblySelector selector = new AssemblySelector(_options); ICollection <string> compiledDlls = selector.GetCompiledAssemblyPaths(); if (compiledDlls.Count > 0) { EditorApplication.update += RestoreUtils.RestoreOriginalDlls; } IDictionary <string, string> backupMap = FileBackup.GetBackupMap(compiledDlls); FileBackup.Backup(backupMap); ICollection <string> dlls = selector.GetAssemblyPaths(); if (dlls.Count == 0 && compiledDlls.Count == 0) { _noCSharpScripts = true; return; } HashSet <string> extraAssemblyReferenceDirectories = new HashSet <string>(_options.extraAssemblyDirectories); #if UNITY_2017_3_OR_NEWER extraAssemblyReferenceDirectories.UnionWith(AssemblyReferenceLocator.GetAssemblyReferenceDirectories()); #endif Obfuscator.SetExtraAssemblyDirectories(extraAssemblyReferenceDirectories.ToArray()); #if UNITY_2018_2_OR_NEWER Obfuscator.ObfuscateMonoBehavioursByAssetDatabase(false); var obfuscateMonoBehaviourNames = _options.obfuscateMonoBehaviourClassNames; try { if (IsXCodeProject() && _options.obfuscateMonoBehaviourClassNames) { Debug.LogWarning("MonoBehaviour class names will not be obfuscated when creating Xcode projects"); _options.obfuscateMonoBehaviourClassNames = false; } #endif Obfuscator.Obfuscate(dlls, compiledDlls, _options, EditorUserBuildSettings.activeBuildTarget); #if !UNITY_2018_2_OR_NEWER if (_options.obfuscateMonoBehaviourClassNames) { /* * RestoreAssets must be registered via the update delegate because [PostProcessBuild] is not guaranteed to be called */ EditorApplication.update += RestoreUtils.RestoreMonobehaviourSourceFiles; _monoBehaviourAssetsNeedReverting = true; } #else } finally { _options.obfuscateMonoBehaviourClassNames = obfuscateMonoBehaviourNames; } #endif _hasObfuscated = true; }