/// <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); }
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); } } } } }
/// <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); }
/// <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)); }
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()); }
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(); }