public static TypeBase TypeBase(TypeDbSaver typeDbSaver) { TypeBase typeBase = new TypeBase() { Name = typeDbSaver.Name }; _typeDictionary.Add(typeBase.Name, typeBase); typeBase.NamespaceName = typeDbSaver.NamespaceName; typeBase.Type = typeDbSaver.Type; typeBase.BaseType = GetOrAdd(typeDbSaver.BaseType); typeBase.DeclaringType = GetOrAdd(typeDbSaver.DeclaringType); typeBase.IsAbstract = typeDbSaver.IsAbstract; typeBase.Accessibility = typeDbSaver.Accessibility; typeBase.IsSealed = typeDbSaver.IsSealed; typeBase.IsStatic = typeDbSaver.IsStatic; typeBase.Constructors = typeDbSaver.Constructors?.Select(MethodBase).ToList(); typeBase.GenericArguments = typeDbSaver.GenericArguments?.Select(GetOrAdd).ToList(); typeBase.ImplementedInterfaces = typeDbSaver.ImplementedInterfaces?.Select(GetOrAdd).ToList(); typeBase.Methods = typeDbSaver.Methods?.Select(MethodBase).ToList(); typeBase.NestedTypes = typeDbSaver.NestedTypes?.Select(GetOrAdd).ToList(); typeBase.Properties = typeDbSaver.Properties?.Select(PropertyBase).ToList(); return(typeBase); }
public static TypeBase GetOrAdd(TypeDbSaver baseType) { if (baseType != null) { if (_typeDictionary.ContainsKey(baseType.Name)) { return(_typeDictionary[baseType.Name]); } else { return(TypeBase(baseType)); } } else { return(null); } }