/// <summary> /// Creates a new instance of <see cref="AssessmentSectionAssemblyResultWrapper"/>. /// </summary> /// <param name="assemblyResult">The <see cref="AssessmentSectionAssemblyResult"/> to wrap.</param> /// <param name="probabilityMethod">The <see cref="AssemblyMethod"/> that is used to assemble the probabilities.</param> /// <param name="assemblyGroupMethod">The <see cref="AssemblyMethod"/> that is used to assemble the assembly group.</param> /// <exception cref="ArgumentNullException">Thrown when <paramref name="assemblyResult"/> is <c>null</c>.</exception> public AssessmentSectionAssemblyResultWrapper(AssessmentSectionAssemblyResult assemblyResult, AssemblyMethod probabilityMethod, AssemblyMethod assemblyGroupMethod) { if (assemblyResult == null) { throw new ArgumentNullException(nameof(assemblyResult)); } AssemblyResult = assemblyResult; ProbabilityMethod = probabilityMethod; AssemblyGroupMethod = assemblyGroupMethod; }
public AssemblyType(Type type) { Name = type.Name; Fields = new List <AssemblyField>(); Properties = new List <AssemblyProperty>(); Methods = new List <AssemblyMethod>(); Constructors = new List <AssemblyConstructor>(); var autoMethods = new List <MethodInfo>(); IsNested = type.IsNested; IsSealed = type.IsSealed; TypeAttributes visibilityMask = type.Attributes & TypeAttributes.VisibilityMask; switch (visibilityMask) { case TypeAttributes.Public: Modifier = AccessModifier.Public; break; case TypeAttributes.NotPublic: Modifier = AccessModifier.Private; break; case TypeAttributes.NestedAssembly: Modifier = AccessModifier.Internal; break; case TypeAttributes.NestedFamily: Modifier = AccessModifier.Protected; break; } TypeAttributes classSemantics = type.Attributes & TypeAttributes.ClassSemanticsMask; switch (classSemantics) { case TypeAttributes.Class: IsAbstract = (type.Attributes & TypeAttributes.Abstract) != 0; IsClass = type.IsClass; if (!IsClass) { IsStructure = true; IsEnum = type.IsEnum; } break; case TypeAttributes.Interface: IsInterface = true; Modifier = AccessModifier.Public; break; } PropertyInfo[] properties = type.GetProperties(BindingFlags); foreach (var property in properties) { var assemblyProperty = new AssemblyProperty(property); autoMethods.AddRange(assemblyProperty.AutoMethods); Properties.Add(assemblyProperty); } FieldInfo[] fields = type.GetFields(BindingFlags); foreach (var field in fields) { if (field.Name.Contains("<")) { continue; } var assemblyField = new AssemblyField(field); Fields.Add(assemblyField); } MethodInfo[] methods = type.GetMethods(BindingFlags); foreach (var methodInfo in methods) { if (!autoMethods.Contains(methodInfo)) { var method = new AssemblyMethod(methodInfo); Methods.Add(method); } } ConstructorInfo[] constructors = type.GetConstructors(BindingFlags); foreach (var constructorInfo in constructors) { var constructor = new AssemblyConstructor(constructorInfo); Constructors.Add(constructor); } }