Exemplo n.º 1
0
        /// <summary>
        /// 解析为json
        /// 实际解析为KeyValuePair类型
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="value"></param>
        /// <param name="serializer"></param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var reader = KeyValuePairReader.GetReader(value.GetType());
            var key    = reader.GetKey(value);
            var val    = reader.GetValue(value);

            writer.WritePropertyName(key.ToString());
            writer.WriteValue(val);
        }
Exemplo n.º 2
0
        private void ReadMapFiles(string directory, string baseFolder)
        {
            foreach (string mappingFile in Directory.GetFiles(directory, "*.map"))
            {
                string fileName = Path.GetFileName(mappingFile);

                if (fileName == "Class.map")
                {
                    KeyValuePairReader classMapReader = new KeyValuePairReader(mappingFile);

                    string package = mappingFile.Substring(baseFolder.Length + 1);
                    package = Path.GetDirectoryName(package);
                    package = package.Replace('\\', '.');

                    foreach (DictionaryEntry entry in classMapReader.GetKeys())
                    {
                        string key = (string)entry.Key;
                        if (!key.StartsWith(package + "."))
                        {
                            key = package + "." + key;
                        }
                        TypeMapping typeMapping = new TypeMapping();
                        typeMapping.Target = entry.Value.ToString();
                        Add(key, typeMapping);
                    }
                }
                else
                {
                    string             mappingFileName = GetMappedType(mappingFile, baseFolder);
                    TypeMapping        typeMapping     = AddClassMapping(mappingFileName);
                    KeyValuePairReader mappingReader   = new KeyValuePairReader(mappingFile);
                    if (typeMapping.Members == null)
                    {
                        typeMapping.Members = new MembersMapping();
                    }
                    foreach (DictionaryEntry entry in mappingReader.GetKeys())
                    {
                        string key   = (string)entry.Key;
                        string value = (string)entry.Value;

                        if (key == "PascalStyle")
                        {
                            AddPascalStyleMembers(typeMapping, value);
                        }
                        else
                        {
                            typeMapping.Members.Add(key, value);
                        }
                    }
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 解析为json
        /// 实际解析为KeyValuePair类型
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="value"></param>
        /// <param name="serializer"></param>
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var reader = KeyValuePairReader.GetReader(value.GetType());
            var key    = reader.GetKey(value).ToString();
            var val    = reader.GetValue(value);

            if (this.useCamelCase == true)
            {
                key = FormatOptions.CamelCase(key);
            }

            writer.WritePropertyName(key);
            writer.WriteValue(val);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 执行转换
        /// </summary>
        /// <param name="context">转换上下文</param>
        /// <returns></returns>
        public override IEnumerable <KeyValuePair <string, string> > Invoke(ConvertContext context)
        {
            var type = context.Type;

            if (type.IsGenericType && type.GetGenericTypeDefinition() == keyValuePairType)
            {
                var reader = KeyValuePairReader.GetReader(type);
                var key    = reader.GetKey(context.Value).ToString();
                var value  = reader.GetValue(context.Value);

                return(new[] { this.GetKeyValuePair(key, value, context.Options) });
            }
            return(this.Next.Invoke(context));
        }
Exemplo n.º 5
0
 private void LoadOptions()
 {
     if (ExecutableName != null)
     {
         string optionsFile = Path.Combine(ExecutableDirectory, ExecutableName + ".options");
         if (File.Exists(optionsFile))
         {
             options = new KeyValuePairReader(optionsFile);
         }
     }
     else
     {
         options = new KeyValuePairReader();
     }
 }
        /// <summary>
        /// 执行转换
        /// </summary>
        /// <param name="context">转换上下文</param>
        /// <returns></returns>
        public override IEnumerable <KeyValuePair <string, string> > Invoke(ConvertContext context)
        {
            var reader = KeyValuePairReader.GetReader(context.DataType);

            if (reader == null)
            {
                return(this.Next.Invoke(context));
            }

            var key   = reader.GetKey(context.Data).ToString();
            var value = reader.GetValue(context.Data);

            var ctx = new ConvertContext(key, value, context.Depths, context.Options);

            return(ctx.ToKeyValuePairs());
        }
Exemplo n.º 7
0
 private void LoadOptions()
 {
     if (ExecutableName != null)
     {
         string optionsFile = Path.Combine(ExecutableDirectory, ExecutableName + ".options");
         if (File.Exists(optionsFile))
             options = new KeyValuePairReader(optionsFile);
     }
     else
         options = new KeyValuePairReader();
 }