Exemple #1
0
        public static ClassSelector Get(Type @class, ClassInclude defaultClassInclude = ClassInclude.None)
        {
            ClassSelector classSelector = new ClassSelector(defaultClassInclude);

            classSelector.AddRange(@class.GetCustomAttributes(false).OfType <ClassDiagramAttribute>());
            return(classSelector);
        }
        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 ClassInclude GetClassInclude(Type type, string diagram)
        {
            // Checks the namespace of 'type' and the 'diagram' against the 'selector'.
            bool CheckNamespaceAndDiagram(Selector selector)
            {
                return(selector.NamespaceSelector.Select(type.Namespace) &&
                       selector.DiagramSelector.Select(diagram));
            }

            // Filtered selectors.
            IEnumerable <Selector> filtered = this.selectors
                                              .Where(CheckNamespaceAndDiagram);

            // Concatenates all class permissions related to the namespace of 'type' for the 'diagram'.
            ClassInclude classInclude = filtered.Aggregate(ClassInclude.None, (acc, selector) => acc | selector.DefaultClassInclude);

            return(classInclude);
        }
Exemple #4
0
        public ClassInclude GetClassInclude(string diagram)
        {
            // Checks the 'diagram' against the 'selector'.
            bool CheckDiagram(Selector selector)
            {
                return(selector.DiagramSelector.Select(diagram));
            }

            // Filtered selectors (cache).
            IEnumerable <Selector> filtered = this.selectors
                                              .Where(CheckDiagram)
                                              .ToArray();

            // If there is no selector, it uses the default behaviour.
            if (!filtered.Any())
            {
                return(this.defaultClassInclude);
            }

            // Concatenates all class permissions for the 'diagram'.
            ClassInclude classInclude = filtered.Aggregate(ClassInclude.None, (acc, selector) => acc | selector.Include);

            return(classInclude);
        }
Exemple #5
0
 private ClassSelector(ClassInclude defaultClassInclude = ClassInclude.None)
 {
     this.defaultClassInclude = defaultClassInclude;
 }
 public static bool Check(this ClassInclude flags, object o)
 {
     return(flags.DecomposeFlag().Any(flag => fastMemberCheck[flag](o)));
 }