2017-10-05 133 views
0

我有一个DTO(或POCO类的,不确定的,正确的说法是什么)类(内型)具有以下值:硬编码值

public class MainDTO 
{ 
    public CustomerDTO[] customer { get; set; } 
    public string itemPurchased { get; set; } 
    public int staffId { get; set; } 
} 

public class CustomerDTO 
{ 
    public string name { get; set; } 
    public string[] address { get; set; } 
} 

我在我的MVC调用此应用程序在REST web服务调用后返回一个带有上述类的值的Json。

我想在控制器中对这些值进行硬编码,以便我可以测试视图。但是,我不知道如何硬编码调用另一个类的值。

//Response variable below contains Json result of the web service call 
var root = JsonConvert.DeserializeObject<GETModel.MainDTO>(response); 

//Hard-coding values to test view 
root.customer = ? //How can I hard-code this value? 
root.itemPurchased = “Random Item”; 
root.staffId = 2299; 

return View(root); 

如何硬编码“root.customer”变量?它包含一个数组和字符串变量。

+0

创建一个类的实例,设置它的变量,你要硬编码值,并对其进行序列化 - 你在做反序列化的正好相反.. – Aaron

+0

'root.customer'是一个数组。你想要设置什么?只是一个空阵列? '新的CustomerDTO [0]'? – David

+0

您可以将它设置为空数组,硬编码值的数组等。您的选择是您的。 'root.customer = new CustomerDTO [0];''或'root.customer = new [] {new CustomerDTO(){name =“John Smith”,address = new [] {“123 Main St”,“Washington DC” }};' – maccettura

回答

3

创建该类的新实例(或更确切地说是该类实例的新数组)并填充它。

root.customer = new CustomerDTO[] 
{ 
    new CustomerDTO() 
    { 
     name = "", 
     address = new string[] 
     { 
      "value1", 
      "value2" 
     } 
    } 
}; 

由于这是一个公开课,公共设置者可以很容易地做到这一点。

+0

使用类型推断,在括号'[]'之前,甚至不需要'CustomerDTO'或'string'类型。 – JuanR

0

虽然我不喜欢硬编码,但可以做这样的事情。

List<CustomerDTO> customers = new List<CustomerDTO>(); 

    var customer1 = new CustomerDTO(); 
    customer1.name = "xyz"; 
    customer1.address = new string[1]; 
    customer1.address[0] = "123, xyz st, city, state"; 

    var customer2 = new CustomerDTO(); 
    customer2.name = "abc"; 
    customer2.address = new string[1]; 
    customer2.address[0] = "123, abc st, city, state"; 

    customers.Add(customer1); 
    customers.Add(customer2); 

    //Hard-coding values to test view 
    root.customer = customers.ToArray(); 
    root.itemPurchased = “Random Item”; 
    root.staffId = 2299; 

    return View(root);