2012-02-13 25 views
7

Tôi đang cố gắng tạo một số Json trong ứng dụng MVC của mình và tôi chỉ muốn bao gồm các thuộc tính từ đối tượng nguồn của mình, nếu nó có một số giá trị thuộc tính, được đặt.Có thể tạo thuộc tính khi đang bay, với đối tượng động .NET không?

ví dụ:

public class Foo 
{ 
    public string Aaaa { get; set; } 
    public string Bbbb { get; set; } 
    public int? Ccccc { get; set; } 
    public Lol Dddd { get; set; } 
} 

// Example Outputs.

  1. Aaaa và Ccccc có giá trị chỉ: return Json(new { Aaaa = source.Aaaa, Cccc = source.Ccccc.Value };

  2. dddd chỉ đã được thiết lập. return Json(new { Dddd = source.Dddd }

Xem làm thế nào tôi đã cố gắng để tạo ra một đối tượng ẩn danh khi đang bay. Vâng, tôi có thể làm điều đó bởi vì trong ví dụ này, tôi biết những gì đã được thiết lập. Nhưng khi nói đến mã thực, tôi sẽ phải làm 'tìm ra' những gì đã thực sự được thiết lập và sau đó tự động trả về điều đó.

Ý tưởng được dựa trên Stack Exchange's Api Wrapper .. nơi chúng có một số giá trị tùy chọn mà chúng quay trở lại qua json, nếu chúng được đặt.

+0

liên quan: http://stackoverflow.com/questions/2974008/adding-unknown-at-design-time-properties-to-an-expandoobject – Steven

Trả lời

11

Hãy nhìn vào các ExpandoObject, một ví dụ với xml được đưa ra here

ví dụ.

dynamic contact = new ExpandoObject(); 
contact.Name = "Patrick Hines"; 
contact.Phone = "206-555-0144"; 
... etc ... 
+1

Henrik, nhìn xuyên qua expandoobject rằng() nhét một thời gian trở lại . tôi không thể không đồng ý với những quan sát của 'bob' về nó: http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the -expandoobject.aspx # 10003637 –

Các vấn đề liên quan