Пример #1
0
        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;
            }
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        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);
        }