Пример #1
0
        static DcTypeBase()
        {
            Assembly assembly = typeof(EntityBase).GetTypeInfo().Assembly;

            foreach (var t in assembly.DefinedTypes)
            {
                if (typeof(EntityBase).IsAssignableFrom(t.AsType()))
                {
                    var modelType = new ModelType(t);
                    DictionaryOfModelTypesKeyedOnTypeName.Add(modelType.TypeInfo.FullName, modelType);
                    DictionaryOfModelTypesKeyedOnTypeDbId.Add(modelType.TypeDbId, modelType);
                }
            }

            var allModelTypes = DictionaryOfModelTypesKeyedOnTypeName.Values;

            foreach (var modelType in allModelTypes)
            {
                modelType._NotAbstractTypeDbIds.AddRange(allModelTypes.Where(t => !t.TypeInfo.IsAbstract && modelType.TypeInfo.IsAssignableFrom(t.TypeInfo)).Select(t => t.TypeDbId));

                var baseType = modelType.TypeInfo.BaseType;

                while (baseType != null)
                {
                    ModelType baseModelType;
                    if (baseType.FullName != null &&
                        DictionaryOfModelTypesKeyedOnTypeName.TryGetValue(baseType.FullName, out baseModelType))
                    {
                        modelType._BaseTypeDbId = baseModelType.TypeDbId;
                        break;
                    }
                    baseType = baseType.GetTypeInfo().BaseType;
                }
            }
        }
Пример #2
0
 public static bool TryGetNotAbstractIncludingDerivedTypeDbIds(
     IEnumerable <string> modelTypeNames,
     out HashSet <int> concreteTypeNames)
 {
     concreteTypeNames = new HashSet <int>();
     foreach (var typeName in modelTypeNames)
     {
         ModelType modelType;
         if (!DictionaryOfModelTypesKeyedOnTypeName.TryGetValue(typeName, out modelType))
         {
             concreteTypeNames = null;
             return(false);
         }
         concreteTypeNames.UnionWith(modelType.NotAbstractTypeDbIds);
     }
     return(true);
 }
Пример #3
0
 public static bool TryGetModelType(string typeName, out ModelType modelType)
 {
     return(DictionaryOfModelTypesKeyedOnTypeName.TryGetValue(typeName, out modelType));
 }