예제 #1
0
        private void ProcessList(IEnumerable <Type> types, UmlPackageName usePackageOnly)
        {
            foreach (var srcType in types)
            {
                var type = srcType.MeOrGeneric();
                if (!ContainsType(type))
                {
                    continue;
                }
                if (_state.ProcessedTypes.Contains(type) || _state.ProcessedTypes.Contains(srcType))
                {
                    continue;
                }
                if (!_entities.TryGetValue(type, out var entity))
                {
                    continue;
                }
                var entityPackageName = GetPackageName(entity);
                if (usePackageOnly != entityPackageName)
                {
                    continue;
                }
                if (entityPackageName.IsEmpty)
                {
                    PackageClose();
                }
                else
                {
                    if (_state.IsPackageOpen && _state.PackageName == entityPackageName)
                    {
                    }
                    else
                    {
                        if (!Packages.TryGetValue(entityPackageName, out var package))
                        {
                            package = new UmlPackage();
                        }
                        _state.UsedPackages[entityPackageName] = package;
                        PackageOpen(entityPackageName, package.Kind.ToString());
                        // OpenPackage(entityPackageName, );
                    }
                }

                _state.ProcessedTypes.Add(type);
                _state.ProcessedTypes.Add(srcType);
                AddToFile(type);
            }
        }
예제 #2
0
        public void Visit(Assembly assembly, UmlDiagram diagram)
        {
            var packages = diagram.Packages;

            foreach (var attribute in assembly.GetCustomAttributes <UmlPackageStyleAttribute>())
            {
                if (!attribute.CanBeUsedFor(diagram))
                {
                    continue;
                }
                var umlPackageName = new UmlPackageName(attribute.PackageName);
                if (!packages.TryGetValue(umlPackageName, out var x))
                {
                    packages[umlPackageName] = x = new UmlPackage();
                }
                x.Kind = attribute.Kind;
            }
        }