public void Add(Module module, MergeDuplicateBehavior duplicateBehavior = MergeDuplicateBehavior.Rename)
        {
            if (module == null)
            {
                throw new ArgumentNullException("module");
            }

            if (module.IsPrimeModule)
            {
                return;
            }

            if (!object.ReferenceEquals(_assembly, module.Assembly))
            {
                return;
            }

            if (_mergedModuleByName.ContainsKey(module.Name))
            {
                return;
            }

            var state = LoadModule(module, duplicateBehavior);

            _mergedModules.Add(state);
            _mergedModuleByName.Add(module.Name, state);
        }
        private MergeModuleState LoadModule(Module module, MergeDuplicateBehavior duplicateBehavior)
        {
            var state = new MergeModuleState();

            state.Module            = module;
            state.DuplicateBehavior = duplicateBehavior;

            LoadTypes(module.Types, state);

            return(state);
        }
        private MergeAssemblyState LoadAssembly(Assembly assembly, MergeDuplicateBehavior duplicateBehavior)
        {
            var state = new MergeAssemblyState();

            state.Assembly          = assembly;
            state.DuplicateBehavior = duplicateBehavior;

            LoadModules(assembly.Modules, state);
            LoadResources(assembly.Resources, state);
            LoadExportedTypes(assembly.ExportedTypes, state);

            return(state);
        }
        public void Add(Assembly assembly, MergeDuplicateBehavior duplicateBehavior = MergeDuplicateBehavior.Rename)
        {
            if (assembly == null)
            {
                throw new ArgumentNullException("assembly");
            }

            if (_mergedAssemblyByName.ContainsKey(assembly.Name))
            {
                return;
            }

            var state = LoadAssembly(assembly, duplicateBehavior);

            _mergedAssemblies.Add(state);
            _mergedAssemblyByName.Add(assembly.Name, state);
        }
示例#5
0
 internal void Read(IBinaryAccessor accessor, ProjectReadState state)
 {
     _duplicateBehavior = (MergeDuplicateBehavior)accessor.ReadByte();
 }