public ClassDiagramNodeData(SoftwareProcessElement processElement, String category) : base(processElement, category) { Attributes = new ObservableCollection <String>(); var type = processElement.GetType(); var properties = type.GetProperties(); var ignoredProperties = new List <string> { "IRI", "Name", "Description", "Type" }; var classSpecificProperties = properties.Where(p => !ignoredProperties.Contains(p.Name)).ToList(); foreach (var attribute in classSpecificProperties.Select(p => p.Name)) { Attributes.Add(attribute); } var parametersField = type.GetFields().FirstOrDefault(f => f.Name == "Parameters"); if (parametersField != null) { List <Parameter> parameterList = parametersField.GetValue(processElement) as List <Parameter>; foreach (var parameter in parameterList.Select(p => p.Name)) { Attributes.Add(parameter); } } }