Rob*_*ler 1 c# public internal class-visibility
我有一个JSON类对象是一个内部类.我希望保持这种方式,以防止其他代码尝试创建该类型的对象,因为我只希望JSON反序列化代码这样做.我可以使用类类型作为变量,但如果我尝试返回该类型的对象,我会得到一个不一致的accessibiliy编译器错误,因为该方法是公共的,类是内部的.
解决这种情况的最佳方法是什么?我想我可以为内部类创建一个接口并传递它,但这意味着我必须为我正在使用的每个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;
}
Run Code Online (Sandbox Code Playgroud)
解决这种情况的最佳方法是什么?
你需要JsonPetShelters公开,或者做GetShelters()内部.
所以你希望能够从不同的程序集中调用此方法?如果是这样,您如何期望调用者使用它,而不了解返回类型?如果没有,为什么这个方法是公开的?
一旦你找到了想要以一致的方式实现的目标,那么改变应该很简单.
编辑:正如您所说,您只希望同一程序集中的代码能够调用该方法,只需将其更改为内部:
internal JsonPetShelters GetShelters()
{
...
}
Run Code Online (Sandbox Code Playgroud)
编译时错误将消失,您将不再暴露出您不希望首先公开的成员.
| 归档时间: |
|
| 查看次数: |
382 次 |
| 最近记录: |