我有一组由json2charp Web 实用程序从 REST 调用产生的 JSON 响应生成的 C# 类。我使用这些类将未来的 JSON 响应反序列化到这些类中。一切都很好。其中一个内部类具有一个数组属性。我尝试使用数组的Length属性在for 循环中使用该属性,但 Length 属性在当前范围内不可用。我猜这是因为它是一个内部类?
为了解决这个问题,我添加了一个名为CountBreeds的公共属性,它只返回数组 Length。这很好用。但是我想知道是否有一种方法可以获取内部类的数组属性的长度,而不必为了公开数组的长度属性而创建属性?如果没有,有没有办法在不向类添加 IEnumerable 支持的情况下迭代数组?
我知道我可以删除“内部”说明符,但如果可以的话,我想保留它。下面的代码片段:
// The internal class I want to iterate.
internal class Breeds
{
[JsonProperty("breed")]
public Breed[] Breed { get; set; }
[JsonProperty("@animal")]
public string Animal { get; set; }
// This property was added to facilitate for loops-that iterate the
// entire array, since the Length propery of the array property
// can not be accessed.
public int CountBreeds
{
get
{
return Breed.Length;
}
}
} // internal class Breeds
// Code that iterates the above class.
// >>>> This doesn't work since the Breeds Length property
// is unavailable in this context.
//
// Add the breeds to the list we return.
for (int i = 0; i < jsonPF.Petfinder.Breeds.Length; i++)
listRet.Add(jsonPF.Petfinder.Breeds.Breed[i].T);
// >>>> This *does* work because I added manually the CountBreeds
// property (not auto-generated by json2csharp).
// Add the breeds to the list we return.
for (int i = 0; i < jsonPF.Petfinder.Breeds.CountBreeds; i++)
listRet.Add(jsonPF.Petfinder.Breeds.Breed[i].T);