Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何指定;“任何名称”;Yaml.Net的字段_C#_.net_Yaml_Yamldotnet - Fatal编程技术网

C# 如何指定;“任何名称”;Yaml.Net的字段

C# 如何指定;“任何名称”;Yaml.Net的字段,c#,.net,yaml,yamldotnet,C#,.net,Yaml,Yamldotnet,我正在尝试使用YAML.Net库反序列化指定的YAML: version: '5' infoFiles: <relative path to file 1>: <int number> <relative path to file 2>: <int number> ... <relative path to file N>: <int number> 要反序列化任何YAML文件,我们需要使用C#类对

我正在尝试使用
YAML.Net
库反序列化指定的
YAML

version: '5'
infoFiles:
   <relative path to file 1>: <int number>
   <relative path to file 2>: <int number>
   ...
   <relative path to file N>: <int number>
要反序列化任何YAML文件,我们需要使用
C#
类对其进行描述:

var deserializer = new Deserializer( null, new CamelCaseNamingConvention() );
var myYamlData = ( Yaml )deserializer.Deserialize( textReader, typeof( MyYamlDataClass ) );

...
class MyYamlDataClass
{
    public int Version;
    public **what type to use here?**[] InfoFiles;
}
那么,如何用Yaml.Net术语描述
InfoFiles
字段呢?
问题是我不知道编译时的字段名。
因此,
YamlAlias
可能不会有帮助


另请参见查看结构描述示例

您可以使用
字典
,并且字段应为属性。最后一节课应该是这样的:

public class MyYamlDataClass
{
  public int Version { get; set; }
  public Dictionary<string, int> InfoFiles { get; set; }
}
公共类MyYamlDataClass
{
公共int版本{get;set;}
公共字典信息文件{get;set;}
}
还要注意,您根本不必指定反序列化类型。在这种情况下,反序列化程序恢复为
字典

var foo=@“版本:'5'
信息文件:
路径:1
路径B:2
路径C:3”;
var deserializer=新的反序列化器(null,new CamelCaseNamingConvention());
var bar=(字典)反序列化器;

Heh,我自己已经找到了这个解决方案:)不过,谢谢您抽出时间。我将标记您的答案,同样,序列化此内容也不那么琐碎:
yamldescriper descriper=newyamldescriper(_path);descripber.Append(“infoFiles:”).NewLine().Join(myYamlData.infoFiles,(i,d)=>d.Append(“”)。Append(i.Key)。Append(“”):“”)。Append(i.Value)。Append(“”),d=>d.NewLine())
public class MyYamlDataClass
{
  public int Version { get; set; }
  public Dictionary<string, int> InfoFiles { get; set; }
}
var foo = @"version: '5'
infoFiles:
  patha: 1
  pathb: 2
  pathc: 3";

var deserializer = new Deserializer(null, new CamelCaseNamingConvention());
var bar = (Dictionary<object,object>)deserializer.Deserialize(new StringReader(foo));