2012-10-01 28 views
6

Trong ứng dụng MVC3 của tôi, tôi muốn tạo ra một bộ sưu tập vô danh với tên lĩnh vực như thế này:Làm cách nào để sử dụng tên thuộc tính phức tạp trong loại ẩn danh?

new 
{                    
    Buyer.Firstname = "Jim", 
    Buyer.Lastname = "Carrey", 
    Phone = "403-222-6487", 
    PhoneExtension = "", 
    SmsNumber = "", 
    Buyer.Company = "Company 10025", 
    Buyer.ZipCode = "90210", 
    Buyer.City = "Beverly Hills", 
    Buyer.State = "CA", 
    Buyer.Address1 = "Address 10025" 
    Licenses[0].IsDeleted = "False", 
    Licenses[0].ID = "6", 
    Licenses[0].AdmissionDate = "2,1999", 
    Licenses[0].AdmissionDate_monthSelected = "2",                   

                    } 

Tôi muốn có này để gửi bài tùy chỉnh các yêu cầu trong quá trình thử nghiệm tích hợp các ứng dụng của tôi. Làm thế nào tôi có thể khai báo một bộ sưu tập ẩn danh với tên trường này?

+0

Sử dụng các loại ẩn danh lồng nhau. Thời gian không được phép trong bất kỳ tên thuộc tính nào. Trừ khi bạn muốn chuyển đổi nó sang một từ điển ... –

+3

Tôi cũng sẽ lưu ý rằng nó ** rất khuyến khích ** bạn tạo một mô hình xem rõ ràng cho điều này thay vì sử dụng các loại vô danh. Việc duy trì mã với các loại ẩn danh sẽ khó khăn trong tương lai. –

+0

Vì tò mò, tại sao không thuộc tính 'Điện thoại',' PhoneExtension' và 'SmsNumber' của' Người mua'? Không phải toàn bộ đối tượng là 'Người mua' sao? – canon

Trả lời

7

Sử dụng một bộ sưu tập vô danh của các đối tượng mang tính chất như vậy:

Licenses = new [] { 
    new { 
     IsDeleted = "False", 
     ID = "6", 
     AdmissionDate = "2,1999", 
     AdmissionDate_monthSelected = "2" 
    } //, ... and so on 
} 

... và trong bối cảnh: ([sửa] Oh, và tôi không thấy người mua của bạn ...)

new 
{  
    Buyer = new { 
     Firstname = "Jim", 
     Lastname = "Carrey", 
     Company = "Company 10025", 
     ZipCode = "90210", 
     City = "Beverly Hills", 
     State = "CA", 
     Address1 = "Address 10025", 
    },                   
    Phone = "403-222-6487", 
    PhoneExtension = "", 
    SmsNumber = "", 
    Licenses = new [] { 
     new { 
      IsDeleted = "False", 
      ID = "6", 
      AdmissionDate = "2,1999", 
      AdmissionDate_monthSelected = "2" 
     } 
    } 
} 
+0

Có thể muốn bọc phần trên bằng 'mới {...}' để làm cho nó rõ ràng hơn –

+0

điều này sẽ giúp, nhưng tôi vẫn có một bộ sưu tập giấy phép rỗng khi bộ sưu tập ràng buộc trên máy chủ. Nhưng tôi cảm thấy rằng tôi đang đi đúng hướng. Cảm ơn! –

+0

Có thể điều này xảy ra vì danh sách ẩn danh không thể được tuần tự –

6

Bạn có thể sử dụng đối tượng và thu initializer cú pháp:

var anonymousObject = new 
{                    
    Phone = "403-222-6487", 
    PhoneExtension = "", 
    SmsNumber = "", 
    Buyer = new 
    { 
     Firstname = "Jim", 
     Lastname = "Carrey", 
     Company = "Company 10025", 
     ZipCode = "90210", 
     City = "Beverly Hills", 
     State = "CA", 
     Address1 = "Address 10025" 
    }, 
    Licenses = new[] 
    { 
     new 
     { 
      IsDeleted = "False", 
      ID = "6", 
      AdmissionDate = "2,1999", 
      AdmissionDate_monthSelected = "2",                   
     } 
    } 
} 
+0

+1. Về cơ bản cùng một giải pháp so với tôi. –

+0

@ OlivierJacot-Descombes Ngoài anh ta đánh đập bạn bằng 3,5 phút ...;) – canon

+0

@canon: Có thể xảy ra câu trả lời được xuất bản trong khi bạn vẫn đang làm việc trên máy của bạn trong Visual Studio! –

2

Hãy thử điều này:

var x = new { 
    Phone = "403-222-6487", 
    PhoneExtension = "", 
    SmsNumber = "", 
    Buyer = new { 
     Firstname = "Jim", 
     Lastname = "Carrey", 
     Company = "Company 10025", 
     ZipCode = "90210", 
     City = "Beverly Hills", 
     State = "CA", 
     Address1 = "Address 10025" 
    }, 
    Licenses = new[] { 
     new { 
      IsDeleted = "False", 
      ID = "6", 
      AdmissionDate = "2,1999", 
      AdmissionDate_monthSelected = "2"}, 
     new { 
      IsDeleted = "True", 
      ID = "7", 
      AdmissionDate = "17,2001", 
      AdmissionDate_monthSelected = "3"} 
    } 
}; 

Lưu ý: Tôi đang sử dụng loại ẩn danh lồng nhau cho người mua và một mảng lồng nhau của một loại khác cùng loại cho giấy phép. Điều này cho phép bạn truy cập các giá trị như thế này

string name = x.Buyer.Lastname; 
string id = x.Licences[0].ID; 
Các vấn đề liên quan