public void VisitBeforeEmit(UmlDiagram diagram) { var typesToAdd = new List <Type>(); foreach (var diagClass in diagram.GetEntities()) { foreach (var mem in diagClass.Members) { switch (mem) { case MethodUmlMember methodUmlMember: var types1 = ProcessMethod(diagram, diagClass, methodUmlMember); typesToAdd.AddRange(types1); break; case PropertyUmlMember propertyUmlMember: var types2 = ProcessProperty(diagram, diagClass, propertyUmlMember); typesToAdd.AddRange(types2); break; } } } foreach (var i in typesToAdd) { diagram.UpdateTypeInfo(i, null); } }
public void VisitBeforeEmit(UmlDiagram diagram) { foreach (var info in diagram.GetEntities()) { UpdateContainerFromAttributes(info, info.Type); foreach (var i in info.Members) { UpdateContainerFromAttributes(i, i.GetMemberInfo()); } } }
public void VisitBeforeEmit(UmlDiagram diagram) { foreach (var entity in diagram.GetEntities()) { foreach (var me in entity.Members) { var hide = HideMember?.Invoke(diagram, me, entity) ?? SetFlagResult.LeaveUnchanged; if (hide == SetFlagResult.LeaveUnchanged) { hide = DefaultHideMethod(diagram, me, entity); } if (hide != SetFlagResult.LeaveUnchanged) { me.HideOnList = hide == SetFlagResult.SetToTrue; } } } }
public void VisitBeforeEmit(UmlDiagram diagram) { foreach (var e in diagram.GetEntities()) { var entityType = e.Type; var bt = entityType.BaseType.MeOrGeneric(); if (entityType.BaseType != null && diagram.ContainsType(bt)) { var rel = Inherits(bt, entityType, diagram).With(UmlArrowDirections.Up); var a1 = entityType.BaseType.GetGenericTypeArgumentsIfPossible(); if (a1.Length > 0) { var a4 = entityType.BaseType.MeOrGeneric().GetGenericArguments(); var sb = new StringBuilder(); for (var i = 0; i < a4.Length; i++) { var t1 = a1[i]; var t2 = a4[i]; var txt = t2.Name + "=" + diagram.GetTypeName(t1); if (i > 0) { sb.Append(", "); } sb.Append(txt); } rel.Label = sb.ToString(); } diagram.Relations.Add(rel); } bool CanAddR(Type clasType, Type interfaceType) { clasType = clasType.BaseType; while (clasType != null) { if (!diagram.ContainsType(clasType)) { return(true); } if (clasType.GetInterfaces().Contains(interfaceType)) { return(false); } clasType = clasType.BaseType; } return(true); } var entityInterfaces = entityType .GetInterfaces() .Select(a => a.MeOrGeneric()) .ToHashSet(); var hideRelationToInterface = new HashSet <Type>(); foreach (var entityInterface in entityInterfaces) { var baseInterfaces = entityInterface.GetInterfaces(); foreach (var baseI in baseInterfaces) { if (diagram.ContainsType(baseI)) { hideRelationToInterface.Add(baseI); } } } foreach (var i in hideRelationToInterface) { entityInterfaces.Remove(i); } foreach (var interfaceType in entityInterfaces) { if (!diagram.ContainsType(interfaceType)) { continue; } if (!CanAddR(entityType, interfaceType)) { continue; } var umlRelation = Inherits(interfaceType, entityType, diagram) .With(UmlArrowDirections.Up); diagram.Relations.Add(umlRelation); } } }