我有这个模型,我试图引用并获得这种类型的数组。
public class TestModel
{
public string Name { get; set; }
public Guid Id { get; set; }
public List<Conditions> Conditions { get; set; }
}
我还需要获得这个条件,这是一个带有几个数组的单独模型。
public class Conditions
{
public List<string> Country { get; set; }
public List<int> Grades { get; set; }
public List<string> Disciplines { get; set; }
}
我可以轻松地获得Name
和Id
但是当我尝试获取任何数组中的值时,我得到一个错误Object reference not set to an instance of an object.
,它通常会作为数组提供没有实例化。有没有办法在没有实例化数组的情况下做到这一点?
我用来获取ID的代码
private static ArrayList GetTests()
{
Console.WriteLine("Get tests");
foreach (TestModel test in testModel)
{
var conditions = test.Conditions.Disciplines;
Console.WriteLine("");
Console.WriteLine("testID: " + test.Id);
}
return networks;
}
模型填充在主方法中:
private static IEnumerable<TestModel> testModel= new TestModel[] { };
public static void Main(string[] args)
{
Console.WriteLine("Start");
Console.WriteLine("Load Test Data");
using (var r = new StreamReader(@"C:\Production\test.json"))
{
string json = r.ReadToEnd();
testModel = JsonConvert.DeserializeObject<TestModel[]>(json);
}
GetTests();
Console.WriteLine("End");
Console.Read();
}
我觉得在读取Json文件并将其放入模型时应填充此内容。
答案 0 :(得分:1)
正如你所说:你没有实例化数组。
例如,您可以在构造函数中执行此操作,使用setter或只是内联(需要C#6.0):
public class Conditions
{
public string[] Country { get; set; } = new string[length];
public int[] Grades { get; set; } = new int[length];
public string[] Disciplines { get; set; } = new string[length];
}
&#34;长度&#34;是数组的长度。如果您不知道尺寸,可以考虑使用List&lt;&gt;或类似的东西。
答案 1 :(得分:0)
切换到每个工作属性的列表。我将用正确的答案编辑上面的代码,感谢@Thomas D.指出我的方向