private static string ToClassBase(ClassType baseType, IEnumerable<InterfaceType> interfaces) { var str = new StringBuilder(); if (baseType != null) { str.Append(baseType.Name); } str.Append(string.Join(",", interfaces.Select(x => x.Name))); return str.ToString(); }
private static ClassType CreateClassType(TypeInfo typeInfo) { var parameterTypes = GetParameterTypes(typeInfo); var baseType = GetBaseType(typeInfo); var interfaceTypes = GetImplementedInterfaceTypes(typeInfo); var logicalType = new ClassType(typeInfo.GetNameWithoutArity(), parameterTypes, baseType, interfaceTypes); if (!_typeRepository.ContainsKey(typeInfo)) { _typeRepository.Add(typeInfo, logicalType); } foreach (var member in GetMembers(typeInfo)) { logicalType.Members.Add(member); } return logicalType; }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="parameterTypes"></param> /// <param name="baseType"></param> public ClassType(string name, IEnumerable<ParameterType> parameterTypes, ClassType baseType) : this(name, parameterTypes, baseType, Enumerable.Empty<InterfaceType>()) { }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="parameterTypes"></param> /// <param name="baseType"></param> /// <param name="interfaces"></param> public ClassType(string name, IEnumerable<ParameterType> parameterTypes, ClassType baseType, IEnumerable<InterfaceType> interfaces) : base(name) { ParameterTypes = parameterTypes; BaseType = baseType; Interfaces = interfaces; }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="baseType"></param> public ClassType(string name, ClassType baseType) : this(name, Enumerable.Empty<ParameterType>(), baseType) { }