Пример #1
0
        protected override List <MemberInfo> GetSerializableMembers(Type objectType)
        {
            XPClassInfo classInfo = dictionary.QueryClassInfo(objectType);

            if (classInfo != null && classInfo.IsPersistent)
            {
                var allSerializableMembers = base.GetSerializableMembers(objectType);
                var serializableMembers    = new List <MemberInfo>(allSerializableMembers.Count);

                foreach (MemberInfo member in allSerializableMembers)
                {
                    XPMemberInfo mi = classInfo.FindMember(member.Name);
                    if (!(mi.IsPersistent || mi.IsAliased || mi.IsCollection || mi.IsManyToManyAlias) ||
                        ((mi.IsCollection || mi.IsManyToManyAlias) && !SerializeCollections) ||
                        (mi.ReferenceType != null && !SerializeReferences) ||
                        (mi.MemberType == typeof(byte[]) && !SerializeByteArrays))
                    {
                        continue;
                    }
                    serializableMembers.Add(member);
                }
                return(serializableMembers);
            }
            return(base.GetSerializableMembers(objectType));
        }
Пример #2
0
 private static XPClassInfo CreateClass(XPDictionary xpDictionary, IPersistentClassInfo info, IClassAssemblyNameBuilder builder)
 {
     XPClassInfo result = xpDictionary.QueryClassInfo(info.AssemblyName, info.Name);
     if (result == null){
         var type = builder.WithAssemblyName(info.AssemblyName).Define(info);
         result = new ReflectionClassInfo(type, xpDictionary);
         CreateAttributes(result, info);
     }
     return result;
 }
Пример #3
0
        void CreateIntermediateClassInfo(XPDictionary outputDictionary, XPDictionary inputDictionary, string className, InitialDataAttribute importDataAttribute, XPMemberInfo memberInfo)
        {
            var info = new IntermediateClassInfo(inputDictionary, className);

            info.CreateMember("Oid_" + importDataAttribute.DataProviderQueryColumnName, typeof(int)).AddAttribute(new KeyAttribute(true));
            info.CreateMember(importDataAttribute.DataProviderQueryColumnName, memberInfo.Owner.KeyProperty.MemberType);
            var collectionElementType = memberInfo.CollectionElementType.ClassType;
            var memberType            = outputDictionary.QueryClassInfo(collectionElementType).KeyProperty.MemberType;

            info.CreateMember(importDataAttribute.DataProviderResultColumnName, memberType);
        }
Пример #4
0
        private static XPClassInfo CreateClass(XPDictionary xpDictionary, IPersistentClassInfo info, IClassAssemblyNameBuilder builder)
        {
            XPClassInfo result = xpDictionary.QueryClassInfo(info.AssemblyName, info.Name);

            if (result == null)
            {
                var type = builder.WithAssemblyName(info.AssemblyName).Define(info);
                result = new ReflectionClassInfo(type, xpDictionary);
                CreateAttributes(result, info);
            }
            return(result);
        }
Пример #5
0
 void MapManyToMany(XPDictionary outputDictionary, XPDictionary inputDictionary, XPClassInfo classInfo)
 {
     foreach (var memberInfo in ManyToManyMemberInfos(classInfo))
     {
         var initialDataAttribute = (InitialDataAttribute)memberInfo.FindAttributeInfo(typeof(InitialDataAttribute));
         var className            = initialDataAttribute.DataProviderTableName;
         if (initialDataAttribute.DataProvider && inputDictionary.QueryClassInfo(null, className) == null)
         {
             CreateIntermediateClassInfo(outputDictionary, inputDictionary, className, initialDataAttribute, memberInfo);
         }
     }
 }
        public XPClassInfo CreateClass(XPDictionary dictionary)
        {
            XPClassInfo result = dictionary.QueryClassInfo(AssemblyName, Name);

            if (result == null)
            {
                XPClassInfo baseClassInfo;
                if (BaseClass != null)
                {
                    baseClassInfo = BaseClass.CreateClass(dictionary);
                }
                else
                {
                    baseClassInfo = dictionary.GetClassInfo(GetDefaultBaseClass());
                }
                result = dictionary.CreateClass(baseClassInfo, Name);
                CreateAttributes(result);
            }
            return(result);
        }
 public DynamicDataTableClassInfo(XPDictionary dictionary, DataTable table)
     : base(dictionary)
 {
     if (table.PrimaryKey.Length != 1)
     {
         throw new NotSupportedException();
     }
     baseClassCore = dictionary.QueryClassInfo(typeof(XPDataTableObject));
     tableNameCore = table.TableName;
     foreach (DataColumn column in table.Columns)
     {
         XPCustomMemberInfo member = CreateMember(column.Caption, column.DataType);
         member.AddAttribute(new PersistentAttribute(column.ColumnName));
         member.AddAttribute(new DisplayNameAttribute(column.Caption));
         if (table.PrimaryKey[0] == column)
         {
             member.AddAttribute(new KeyAttribute(column.AutoIncrement));
         }
     }
     dictionary.AddClassInfo(this);
 }
Пример #8
0
 void CreateIntermediateClassInfo(XPDictionary outputDictionary, XPDictionary inputDictionary, string className, InitialDataAttribute importDataAttribute, XPMemberInfo memberInfo) {
     var info = new IntermediateClassInfo(inputDictionary, className);
     info.CreateMember("Oid_" + importDataAttribute.DataProviderQueryColumnName, typeof(int)).AddAttribute(new KeyAttribute(true));
     info.CreateMember(importDataAttribute.DataProviderQueryColumnName, memberInfo.Owner.KeyProperty.MemberType);
     var collectionElementType = memberInfo.CollectionElementType.ClassType;
     var memberType = outputDictionary.QueryClassInfo(collectionElementType).KeyProperty.MemberType;
     info.CreateMember(importDataAttribute.DataProviderResultColumnName, memberType);
 }
Пример #9
0
 void MapManyToMany(XPDictionary outputDictionary, XPDictionary inputDictionary, XPClassInfo classInfo) {
     foreach (var memberInfo in ManyToManyMemberInfos(classInfo)) {
         var initialDataAttribute = (InitialDataAttribute)memberInfo.FindAttributeInfo(typeof(InitialDataAttribute));
         var className = initialDataAttribute.DataProviderTableName;
         if (initialDataAttribute.DataProvider && inputDictionary.QueryClassInfo(null, className) == null) {
             CreateIntermediateClassInfo(outputDictionary, inputDictionary, className, initialDataAttribute, memberInfo);
         }
     }
 }
Пример #10
0
 public void ForceRegisterEntity(Type item)
 {
     XPDictionary.QueryClassInfo(item);
     ((HashSet <Type>) this.GetFieldValue("entityTypes")).Add(item);
     Instance.RegisterEntity(item);
 }