- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在玩一些 yaml 和 YamlDotNet
但是我在反序列化一些看起来很容易做到的问题时遇到了问题。
这是我的 yaml 文件:
---
# Folders to secure (with recursive content)
folders2Secure:
- .git
- .vs
folders2Delete:
- packages
- obj
- bin
- TestResults
- node_modules
...
相关的 C# 对象:
public class FolderPreferences
{
public List<string> Folders2Secure { get; set; }
public List<string> Folders2Delete { get; set; }
}
使用这段代码来反序列化:
public class ConfigurationReader
{
public FolderPreferences Read(string configurationFile)
{
var input = new StringReader(configurationFile);
var deserializerBuilder = new DeserializerBuilder().WithNamingConvention(new CamelCaseNamingConvention());
var deserializer = deserializerBuilder.Build();
var result = deserializer.Deserialize<FolderPreferences>(input);
return result;
}
}
我有这个错误/堆栈竞争:
YamlDotNet.Core.YamlException was unhandled
HResult=-2146233088
Message=(Line: 1, Col: 1, Idx: 0) - (Line: 1, Col: 19, Idx: 18): Exception during deserialization
Source=YamlDotNet
StackTrace:
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) in C:\projects\yamldotnet\YamlDotNet\Serialization\ValueDeserializers\NodeValueDeserializer.cs:line 75
at YamlDotNet.Serialization.ValueDeserializers.AliasValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) in C:\projects\yamldotnet\YamlDotNet\Serialization\ValueDeserializers\AliasValueDeserializer.cs:line 134
at YamlDotNet.Serialization.Deserializer.Deserialize(IParser parser, Type type) in C:\projects\yamldotnet\YamlDotNet\Serialization\Deserializer.cs:line 315
at YamlDotNet.Serialization.Deserializer.Deserialize[T](TextReader input) in C:\projects\yamldotnet\YamlDotNet\Serialization\Deserializer.cs:line 257
at Ebys.CleanFolders.Library.ConfigurationReader.Read[T](String configurationFile) in E:\WorkingGit\bitbucket\CleanFolders\Ebys.CleanFolders.Library\ConfigurationReader.cs:line 21
at Ebys.CleanFolders.ConsoleUi.Program.Main(String[] args) in E:\WorkingGit\bitbucket\CleanFolders\Ebys.CleanFolders\Program.cs:line 27
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
HResult=-2147467262
Message=Invalid cast from 'System.String' to 'Ebys.CleanFolders.Library.FolderPreferences'.
Source=mscorlib
StackTrace:
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at YamlDotNet.Serialization.Utilities.TypeConverter.ChangeType(Object value, Type destinationType, CultureInfo culture) in C:\projects\yamldotnet\YamlDotNet\Serialization\Utilities\TypeConverter.cs:line 128
at YamlDotNet.Serialization.NodeDeserializers.ScalarNodeDeserializer.YamlDotNet.Serialization.INodeDeserializer.Deserialize(IParser parser, Type expectedType, Func`3 nestedObjectDeserializer, Object& value) in C:\projects\yamldotnet\YamlDotNet\Serialization\NodeDeserializers\ScalarNodeDeserializer.cs:line 96
at YamlDotNet.Serialization.ValueDeserializers.NodeValueDeserializer.DeserializeValue(IParser parser, Type expectedType, SerializerState state, IValueDeserializer nestedObjectDeserializer) in C:\projects\yamldotnet\YamlDotNet\Serialization\ValueDeserializers\NodeValueDeserializer.cs:line 60
InnerException:
知道我做错了什么吗?
已编辑
GVim 中 Hexa View 中的文件。
最佳答案
问题是您正在创建一个 StringReader
,它是您指定的字符串的阅读器,而不是文件的阅读器。您需要使用 File.OpenText
或类似的 API 来读取文件:
public FolderPreferences Read(string configurationFile)
{
using (var input = File.OpenText(configurationFile))
{
var deserializerBuilder = new DeserializerBuilder().WithNamingConvention(new CamelCaseNamingConvention());
var deserializer = deserializerBuilder.Build();
var result = deserializer.Deserialize<FolderPreferences>(input);
return result;
}
}
关于c# - 使用 yamldotnet 反序列化 yaml 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706032/
这可能会出什么问题: public void Main() { var input = new StringReader(Document); var
我正在尝试弄清楚如何使用 YamlDotNet 跳过序列化空集合。我对自定义 ChainedObjectGraphVisitor 和 IYamlTypeConverter 进行了试验。我是使用 Yam
我有一个代表 RPC 方法调用的 .NET 类,如下所示: class MethodCall { public string MethodName { get; set; } publ
有人可以帮我弄这个吗。使用方法 YamlDotNet反序列化一个对象? 我的代码: open YamlDotNet open YamlDotNet.Serialization open System
我正在尝试使用 YamlDotNet 来帮助我解析配置文件。我研究了它的文档并找到了两种方法: 使用 YamlStream 的 Load() 方法,然后检查它创建的 YamlDocument 的节点;
我正在尝试创建一个简单的模型,用于使用 YamlDotNet 将 yaml 文件解析为我的域对象.需要注意的是,我希望域模型是只读的,所以我试图通过继承和内部 setter 来解决这个问题。 但出于某
我发现了 yaml 和 yamldotnet。抱歉,如果这是一个非常基本的问题: 使用单个感叹号在 yaml 中定义用户定义的类型是否有意义,例如: red: !color { red: 255, g
我需要将一个yaml 文件 转换为json 格式,以便根据json 模式 对其进行验证。所以我用yamldotnet读取yaml文件,用json.net序列化成json格式的字符串。不幸的是,在那之后
我正在使用以下代码片段将项目的动态模型序列化为字符串(最终导出到 YAML 文件)。 dynamic exportModel = exportModelConvertor.ToDynamicM
有没有办法在序列化过程中生成注释?我序列化了一些我想用注释装饰的对象。 最佳答案 序列化程序不支持发出注释。这是因为 comments are a presentation detail and ar
我正在使用 YamlDotNet 解析简单的配置文件(无深度嵌套等)。反序列化器将解析包含重复字段的字符串,覆盖之前的值。例如, foo: bar foo: baz 被认为等同于 foo: baz 对
是否可以按照源文档中出现的顺序访问映射的键? IE。如果我有这个简单的文档: values: first: something1 second: something2 thir
我有一个深度嵌套的对象模型: public class CheatSheet { public string Leader { get; set; } public List Sect
我正在将我的配置文件从 .json 格式移植到 .yaml 格式。在 Newtonsoft.Json 中,我能够将属性应用于需要自定义转换器的属性,例如 [JsonConverter(typeof(C
我正在尝试反序列化一些在序列化 Java HashSet 时在 SnakeYaml 创建的字符串中设置了 !! 的 YAML。不同的泛型类型被序列化,例如 HashSet 和自定义类型 HashSet
我对 C# YamlDotNet 库有疑问 http://www.aaubry.net/page/YamlDotNet 您知道图书馆是否支持“合并键”吗? http://yaml.org/type/m
我有一个应用程序,我可以在其中读取我事先不知道其结构的任意 Yaml 文件。我发现 YamlStream 和其他 YamlNode 实现很有用,因为它们允许我遍历整个 Yaml 文件。但是,有时我有一
使用YamlDotNet ,我正在尝试反序列化以下 YAML: Collection: - Type: TypeA TypeAProperty: value1 - Type: Type
YamlDotNet 是否支持对文档中存在未映射到结果对象中的字段的字段进行反序列化?例如: 给定一个类型: public class Foo { public string AField {
我正在玩一些 yaml 和 YamlDotNet 但是我在反序列化一些看起来很容易做到的问题时遇到了问题。 这是我的 yaml 文件: --- # Folders to secure (with re
我是一名优秀的程序员,十分优秀!