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)); }
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; }
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); }
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); }
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); }
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); }
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 void ForceRegisterEntity(Type item) { XPDictionary.QueryClassInfo(item); ((HashSet <Type>) this.GetFieldValue("entityTypes")).Add(item); Instance.RegisterEntity(item); }