我有一个 JSON 类对象,它是一个内部类。我想保持这种方式以防止其他代码尝试创建该类型的对象,因为我只希望 JSON 反序列化代码执行此操作。我可以将类类型用作变量,但是如果我尝试返回该类型的对象,则会出现不一致的可访问性编译器错误,因为该方法是public并且类是internal。
解决这种情况的最佳方法是什么?我想我可以为内部类创建一个接口并传递它,但这意味着我必须为我正在使用的每个 JSON 类创建额外的包袱,而且我使用了很多。
编辑:我做了 Jon Skeet 建议的改变,问题就消失了。由于默认情况下将我的课程声明为公共的习惯,我遇到了这个问题。我为其他正在做同样事情的人指出这一点。
// The internal class.
internal class JsonPetShelters
{
[JsonProperty("@encoding")]
public string Encoding { get; set; }
[JsonProperty("@version")]
public string Version { get; set; }
[JsonProperty("petfinder")]
public Petfinder Petfinder { get; set; }
}
// This method gets the inconsistent accessibility error since
// JsonPetShelters is an internal class.
public JsonPetShelters GetShelters()
{
// For example purposes only
return null;
}