Im cố gắng sử dụng DynamicObject trong C#, và tôi cần một loạt các động:Mảng năng động | ExpandoObject | với một cú pháp initialize nén
var d = new dynamic[];
mà hoạt động tốt.
CHỈNH SỬA: Xem ExpandoObject bên dưới.
Nhưng tôi cũng muốn để điền vào đó mảng với một số dữ liệu với nén khởi cú pháp mới này:
var d = new dynamic[] {
new {
Name = "Some",
Number = 1010
},
new {
Name = "Other",
Number = 2010
}
}
Nhưng trong trường hợp đó tất cả các đối tượng được loại không động "đối tượng" và một vòng qua các mục sẽ cho tôi một ngoại lệ:
foreach (dynamic item in d)
{
@item.Name
@item.Number
}
Lỗi: 'đối tượng' không chứa định nghĩa cho 'Tên'. Tôi đoán tôi chỉ cần khởi tạo các mục mảng một cách sai lầm. Làm cách nào để thêm đối tượng động thay thế?
EDIT: Nội dung mới:
Tôi nhận ra "năng động" không có khả năng để tự động thêm thuộc tính.
Tôi nên sử dụng ExpandoObject để hiển thị tất cả các mục trong từ điển nội bộ dưới dạng thuộc tính. Nhưng tiếc là ExpandoObject dường như không hỗ trợ đẹp này nén tạo cú pháp, và trình biên dịch phàn nàn:
var d = new ExpandoObject[]{
new ExpandoObject(){
Name="Nnn",
Number=1080
}
}
Vì vậy, câu trả lời chỉ có thể là: nó là không thể.
Bạn có chắc chắn bạn không chỉ muốn một mảng của một loại vô danh? – Ani
Đây có phải là trong ASP.NET MVC3? –
Hãy nhớ rằng một 'năng động' _is_ một' đối tượng', chỉ là trình biên dịch C# xử lý nó một cách khác nhau và trang trại tất cả các truy cập trên 'động' off để DLR – thecoop