C# - 使用包含数组模型的模型

时间:2017-01-20 11:08:24

标签: c# arrays model

我有这个模型,我试图引用并获得这种类型的数组。

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; }
}

我可以轻松地获得NameId但是当我尝试获取任何数组中的值时,我得到一个错误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文件并将其放入模型时应填充此内容。

2 个答案:

答案 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.指出我的方向