2011-07-14 22 views
16

tôi có lẽ muốn quá nhiều, nhưng kịch bản của tôi làThêm tài sản cho động vật NET

public dynamic CreateConfigObject(JobConfigurationModel config) { 
    dynamic configObject = new { }; 

    configObject.Git = new GitCheckout { 
     Repository = config.Github.Url 
    }; 

    return configObject; 
} 

Tất nhiên, nó không thành công trên configObject.Git kể từ khi tài sản này không tồn tại. Tôi muốn có thể thêm bất kỳ số thuộc tính nào vào thời gian chạy, với bất kỳ kiến ​​thức trước về số lượng và tên của thuộc tính;

Trường hợp này có thể xảy ra trong C# hay không, hoặc trí tưởng tượng JavaScript bị bệnh của tôi bắt đầu làm tôi đau? :)

+0

thể trùng lặp của [? Làm thế nào để tạo ra tính năng động trong C#] (http://stackoverflow.com/question/947241/how-do-i-create-dynamic-properties-in-c) – nawfal

Trả lời

34

dynamic cho phép truy cập lỏng lẻo vào các đối tượng được nhập mạnh.

Bạn nên sử dụng lớp ExpandoObject, cho phép truy cập một cách lỏng lẻo, đánh máy đến một từ điển nội bộ:

dynamic configObject = new ExpandoObject(); 

configObject.Git = new GitCheckout { 
    Repository = config.Github.Url 
}; 
+0

Đơn giản chỉ cần tuyệt vời :) –

+2

ExpandoObject, bây giờ đối tượng yêu thích của tôi về .NET :) –

+11

Đừng lạm dụng 'ExpandoObject'. Đừng từ bỏ thời gian an toàn loại trừ khi bạn thực sự cần. – SLaks

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