内部クラスである JSON クラス オブジェクトがあります。JSON デシリアライゼーション コードだけがそれを行うようにしたいので、他のコードがその型のオブジェクトを作成しようとするのを防ぐために、その方法を維持したいと思います。クラス型を変数として使用できますが、その型のオブジェクトを返そうとすると、メソッドがpublicでクラスがinternalであるため、一貫性のないアクセシビリティコンパイラ エラーが発生します。
この状況を解決する最善の方法は何ですか? 内部クラス用のインターフェースを作成してそれを渡すことができると思いますが、それは、使用しているすべての JSON クラスに対して余分な荷物を作成する必要があり、それらをたくさん使用していることを意味します。
編集: Jon Skeet によって提案された変更を行い、問題は解決しました。クラスをデフォルトで public と宣言する習慣があるため、この問題に陥りました。同じことをしている他の人のためにこれを指摘しています。
// 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;
}