示例#1
0
        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);
        }
示例#2
0
 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);
     }
 }