Exemplo n.º 1
0
        private bool ShouldShowInheritanceInterface(ClassDiagramVisitorContext context, Type type)
        {
            bool showInheritance = this.RenderInheritance && this.ReflectedType.BaseType != null;

            if (showInheritance)
            {
                var interfaceModel = context.GetTypeMetaModel(type);
                showInheritance |= !interfaceModel.HideAsBaseClass && !interfaceModel.Hidden;
            }
            return(showInheritance);
        }
Exemplo n.º 2
0
    public static ClassDescriptor GetDescriptor(this Type type, ClassDiagramVisitorContext context)
    {
        ClassDescriptor firstOrDefault = context.Diagram.RootClasses.InnerList.FirstOrDefault(x => x.ReflectedType == type);

        if (firstOrDefault != null)
        {
            return(firstOrDefault);
        }

        return(GetReflected(type));
    }
Exemplo n.º 3
0
        private void LoadMethods(ClassDiagramVisitorContext context)
        {
            var methods = this.ReflectedType.GetMethods(context.ShowMethodsBindingFlags).OrderBy(method => method.Name);

            foreach (var method in methods)
            {
                if (!method.IsProperty()) // weed up the compiler generated methods for properties
                {
                    _methods.Add(new ClassMethodDescriptor(method));
                }
            }
        }
Exemplo n.º 4
0
        private bool IsBaseClassVisible(ClassDescriptor @class, ClassDiagramVisitorContext context)
        {
            if (_diagram.RootClasses.InnerList.Any(x => x.ReflectedType == @class.ReflectedType.BaseType))
            {
                return(true);
            }

            if (context.VisitedRelatedClasses.Any(x => x.ReflectedType == @class.ReflectedType.BaseType))
            {
                return(true);
            }

            return(false);
        }
Exemplo n.º 5
0
        public string Write(ClassDiagramVisitorContext context)
        {
            string color = _class.Color ?? _diagram.GetClassColor(_class);

            StringBuilder buffer = new StringBuilder();

            if (_class.ReflectedType.IsInterface)
            {
                buffer.AppendLine(string.Format("    interface \"{0}\"{1} {2}", _class.Name, color, "{"));
            }
            else if (_class.ReflectedType.IsAbstract)
            {
                buffer.AppendLine(string.Format("    abstract class \"{0}\"{1} {2}", _class.Name, color, "{"));
            }
            else
            {
                buffer.AppendLine(string.Format("    class \"{0}\"{1} {2}", _class.Name, color, "{"));
            }

            var definedMembers = _class.Members.InnerList.Where(x => !x.IsInherited).OrderBy(x => x.Name).ToArray();

            if (!IsBaseClassVisible(_class, context))
            {
                var inheritedMembers = _class.Members.InnerList.Where(x => x.IsInherited).OrderBy(x => x.Name).ToArray();
                WriteClassMembers(inheritedMembers, buffer);

                if (definedMembers.Length > 0 && inheritedMembers.Length > 0)
                {
                    buffer.AppendLine("    --");
                }
            }

            WriteClassMembers(definedMembers, buffer);
            WriteClassMethods(_class.Methods.InnerList, buffer);

            buffer.AppendLine("    }");

            var note = _class.MetaModel.Note != null?_class.MetaModel.Note.ToString() : null;

            if (note != null)
            {
                buffer.AppendLine(note);
            }

            return(buffer.ToString());
        }
Exemplo n.º 6
0
        public string Write(ClassDiagramVisitorContext context)
        {
            StringBuilder buffer = new StringBuilder();

            var names = Enum.GetNames(_enumType);

            buffer.AppendLine("enum \"{0}\" {1}".FormatWith(_enumType.Name, "{"));

            if (context.ShowMembers)
            {
                foreach (var name in names)
                {
                    buffer.AppendLine("     {0}".FormatWith(name));
                }
            }

            buffer.AppendLine("}");

            return(buffer.ToString());
        }
Exemplo n.º 7
0
        protected virtual void LoadMembers(ClassDiagramVisitorContext context)
        {
            switch (context.ScanMode)
            {
            case ClassDiagramScanModes.SystemServiceModelMember:
                _members.AddRange(this.ReflectedType.GetFields()
                                  .Where(x => x.HasAttribute <DataMemberAttribute>() || x.HasAttribute <MessageBodyMemberAttribute>())
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(field => new ClassMemberDescriptor(this, field))
                                  );
                _members.AddRange(this.ReflectedType.GetProperties()
                                  .Where(x => x.HasAttribute <DataMemberAttribute>() || x.HasAttribute <MessageBodyMemberAttribute>())
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(property => new ClassMemberDescriptor(this, property))
                                  );
                break;

            case ClassDiagramScanModes.AllMembers:
                _members.AddRange(this.ReflectedType.GetFields(context.ShowMembersBindingFlags)
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(field => new ClassMemberDescriptor(this, field))
                                  );
                _members.AddRange(this.ReflectedType.GetProperties(context.ShowMembersBindingFlags)
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(property => new ClassMemberDescriptor(this, property))
                                  );
                break;

            default:
                _members.AddRange(this.ReflectedType.GetFields()
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(field => new ClassMemberDescriptor(this, field))
                                  );
                _members.AddRange(this.ReflectedType.GetProperties()
                                  .Where(x => !x.IsDefined(typeof(CompilerGeneratedAttribute), false))
                                  .Select(property => new ClassMemberDescriptor(this, property))
                                  );
                break;
            }
        }
Exemplo n.º 8
0
 protected override void LoadMembers(ClassDiagramVisitorContext context)
 {
     // don't load any member for enums
 }
Exemplo n.º 9
0
 protected override void LoadMembers(ClassDiagramVisitorContext context)
 {
     // don't load members if it's an enum
 }
Exemplo n.º 10
0
 internal IDiagramFormatter CreateFormatter(ClassDiagramVisitorContext context)
 {
     return(new ClassDiagramFormatter(this, context));
 }
Exemplo n.º 11
0
 protected override void Finalize(ClassDiagramVisitorContext current)
 {
     _classes.AddRange(current.VisitedRelatedClasses);
 }