internal void RebuildProperties(List <MemberBinaryModelInfo> properties) { Properties = new BasePropertyGoInfo <TObject> [TypeGoInfo.Properties.Count]; PropertiesLength = TypeGoInfo.Properties.Count; int i = 0; foreach (KeyValuePair <string, BasePropertyGoInfo <TObject> > propertyKeyValue in TypeGoInfo.Properties) { BasePropertyGoInfo <TObject> property = propertyKeyValue.Value; property.Name = propertyKeyValue.Key; property.NameBytes = Options.Encoding.GetBytes(property.Name); Properties[i] = property; MemberBinaryModelInfo findProperty = properties.FirstOrDefault(x => x.Name == property.Name); property.Index = findProperty.Index; i++; } //order properties //re indexing properties because generation will set index of properties Properties = Properties.OrderBy(x => x.Index).ToArray(); for (i = 0; i < Properties.Length; i++) { BasePropertyGoInfo <TObject> property = Properties[i]; property.NameSerialized = JsonConstantsString.Quotes.ToString(); property.NameSerialized += property.Name; property.NameSerialized += JsonConstantsString.QuotesColon; } }
/// <summary> /// Get binary member /// </summary> /// <returns></returns> internal override MemberBinaryModelInfo GetBinaryMember(BaseOptionInfo option, Dictionary<Type, BinaryModelInfo> generatedModels) { MemberBinaryModelInfo memberBinaryModelInfo = new MemberBinaryModelInfo() { Name = Name, ResultType = BinaryModelInfo.GetBinaryModel(TypeGoInfo, option, generatedModels), CanRead = true, CanWrite = true, Type = MemberBinaryModelType.Property }; return memberBinaryModelInfo; }
Type GetTypeOfProperty(MemberBinaryModelInfo memberBinaryModel) { string fullName = memberBinaryModel.ResultType.GetFullName(); KeyValuePair <Type, string> find = ReflectionHelper.VariableTypes.FirstOrDefault(x => x.Value == fullName); if (find.Value == null) { if (MovedTypes.TryGetValue(memberBinaryModel.ResultType.ToString(), out Type type)) { return(type); } throw new Exception($"Property of type {fullName} not found!"); } return(find.Key); }