private DomainProperty GetValueProperty(RuntimeType objectType, ValueEntry entry) { var propertyName = entry.Name.FirstToUpper(); var propertyType = GetValueType(entry); var propertyInfo = objectType.AddProperty(propertyName, propertyType); propertyInfo.AddAttribute(new PropertyRepositoryAttribute()); object defaultValue = DataUtil.GetDefaultValue(propertyType); //字符串类型处理 if (entry.TypeName == "string" || entry.TypeName == "ascii") { if (entry.Descriptions.Count > 0) { if (int.TryParse(entry.Descriptions[0], out int max)) { propertyInfo.AddAttribute(new StringLengthAttribute(0, max)); } if (entry.TypeName == "ascii") { propertyInfo.AddAttribute(new ASCIIStringAttribute()); } } defaultValue = string.Empty; } return(DomainProperty.Register(propertyName, propertyType, objectType, (o, p) => { return defaultValue; }, PropertyChangedMode.Compare, propertyType)); }
private DomainProperty GetObjectProperty(RuntimeType objectType, ObjectEntry entry) { string propertyName = entry.Name.FirstToUpper(); var define = GetObjectDefine(objectType, entry); Type propertyType = define.MetadataType; var propertyInfo = objectType.AddProperty(propertyName, propertyType); propertyInfo.AddAttribute(new PropertyRepositoryAttribute()); return(DomainProperty.Register(propertyName, propertyType, objectType, (o, p) => { return define.EmptyInstance; }, PropertyChangedMode.Definite, propertyType)); }
private DomainProperty GetValueProperty(RuntimeType objectType, ValueEntry entry) { var propertyName = entry.Name.FirstToUpper(); var propertyType = GetValueType(entry); var propertyInfo = objectType.AddProperty(propertyName, propertyType); propertyInfo.AddAttribute(new PropertyRepositoryAttribute()); object defaultValue = entry.IsString ? string.Empty : DataUtil.GetDefaultValue(propertyType); AttachAttributes(propertyInfo, entry); return(DomainProperty.Register(propertyName, propertyType, objectType, (o, p) => { return defaultValue; }, PropertyChangedMode.Compare, propertyType)); }
private DomainProperty GetListProperty(RuntimeType objectType, ListEntry entry) { var itemEntry = entry.ItemEntry; var elementType = GetType(objectType, itemEntry); string propertyName = entry.Name.FirstToUpper(); Type propertyType = GetListType(elementType); var propertyInfo = objectType.AddProperty(propertyName, propertyType); propertyInfo.AddAttribute(new PropertyRepositoryAttribute()); return(DomainProperty.Register(propertyName, propertyType, objectType, (o, p) => { return propertyType.CreateInstance(); }, PropertyChangedMode.Definite, elementType)); }