我正在尝试创建一个简单的模型,用于使用YamlDotNet将 yaml 文件解析为我的域对象。需要注意的是,我希望域模型是只读的,所以我试图通过继承和内部设置器来解决这个问题。
但出于某种原因,库抛出了一个异常,说明:
在类型“ConsoleApplication1.Repositories.YamlTemplateRepository+DeserializeableTemplate”上找不到属性“?HtmlTemplate”。
我正在使用别名,但即使刮擦它,并且使用具有正确属性名称的测试类也不能正确设置。
我究竟做错了什么?我是否误解了图书馆应该如何使用?
调用 YamlDotNet 的代码如下所示:
deserializer.Deserialize<DeserializeableTemplate>(yamlContents);
Run Code Online (Sandbox Code Playgroud)
我正在反序列化的类如下所示:
private class DeserializeableTemplate : Template
{
[YamlMember(Alias = "HtmlTemplate")]
public string HtmlTemplateWrapper
{
get { return HtmlTemplate; }
set { HtmlTemplate = value; }
}
// A few more properties...
}
Run Code Online (Sandbox Code Playgroud)
和我继承的课程:
public class Template
{
public string HtmlTemplate { get; internal set; }
// A few more properties...
}
Run Code Online (Sandbox Code Playgroud)
老问题,但我有一个类似的问题,通过将继承的属性设置器的访问修饰符更改为protected. 我猜测internal这里使用的修饰符是在反序列化上耍花招。对于使模型真正只读的问题,这可能是一个不需要的解决方案,但我想为将来的故障排除人员分享我的解决方案。
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |