コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: Postbuild.cs プロジェクト: Tetta/Solitaire
        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;
            }
        }
コード例 #4
0
 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));
 }
コード例 #5
0
        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);
        }
コード例 #6
0
    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");
        }
    }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
 /**
  * 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;
     }
 }
コード例 #9
0
        //, 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);
            }
        }
コード例 #10
0
        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();
            }
        }
コード例 #11
0
                public void FromAssembliesMatching_RegexPatternsNullValueGiven_ShouldThrowArgumentNullException()
                {

                    var assemblySelector = new AssemblySelector();		 

                    assemblySelector.FromAssembliesMatching(null);		 

                }
コード例 #12
0
                public void FromAssemblyContaining_IEnumerableType_TypesNullValueGiven_ShouldThrowArgumentNullException()
                {

                    var assemblySelector = new AssemblySelector();		 

                    assemblySelector.FromAssemblyContaining((IEnumerable<Type>)null);		 

                }
コード例 #13
0
                public void FromAssemblyContaining_TypeArray_TypesNullValueGiven_ShouldThrowArgumentNullException()
                {

                    var assemblySelector = new AssemblySelector();		 

                    assemblySelector.FromAssemblyContaining((Type[])null);		 

                }
コード例 #14
0
                public void From_StringArray_AssembliesNullValueGiven_ShouldThrowArgumentNullException()
                {

                    var assemblySelector = new AssemblySelector();		 

                    assemblySelector.From((String[])null);		 

                }
コード例 #15
0
                public void From_IEnumerableString_AssembliesNullValueGiven_ShouldThrowArgumentNullException()
                {

                    var assemblySelector = new AssemblySelector();		 

                    assemblySelector.From((IEnumerable<string>)null);		 

                }
コード例 #16
0
        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;
        }