我正在尝试创建一个使用YamlDotNet将yaml文件解析为域对象的简单模型。请注意,我希望域模型是只读的,所以我试图通过继承和内部设置来解决这个问题。
但是,出于某种原因,库抛出一个异常,声明:
在'ConsoleApplication1.Repositories.YamlTemplateRepository+DeserializeableTemplate'.类型中找不到属性“HtmlTemplate”
我使用的是别名,但即使使用这个别名,使用具有正确属性名称的测试类也不能将其设置正确。
我做错了什么?我是否误解了图书馆应该如何使用?
调用YamlDotNet的代码如下所示:
deserializer.Deserialize<DeserializeableTemplate>(yamlContents);我正在反序列化的类如下所示:
private class DeserializeableTemplate : Template
{
[YamlMember(Alias = "HtmlTemplate")]
public string HtmlTemplateWrapper
{
get { return HtmlTemplate; }
set { HtmlTemplate = value; }
}
// A few more properties...
}我所继承的阶级:
public class Template
{
public string HtmlTemplate { get; internal set; }
// A few more properties...
}发布于 2020-05-27 14:27:20
以前的问题,但我有一个类似的问题,这是通过将继承的属性设置器的访问修饰符更改为protected来解决的。我猜这里使用的internal修饰符是在反序列化上玩把戏。对于使模型真正只读的问题,这可能是一个不必要的解决方案,但我想为未来的疑难解答人员分享我的解决方案。
https://stackoverflow.com/questions/41300528
复制相似问题