Tôi đang tìm cách thêm thành viên tự động vào đối tượng động. OK, tôi đoán một chút làm rõ là cần thiết ...Tự động thêm thành viên vào đối tượng động
Khi bạn làm điều đó:
dynamic foo = new ExpandoObject();
foo.Bar = 42;
Thuộc tính Bar
sẽ được thêm tự động khi chạy. Nhưng mã vẫn đề cập đến "tĩnh" tới Bar (tên "Bar" được mã hóa cứng) ... Nếu tôi muốn thêm thuộc tính vào thời gian chạy mà không biết tên của nó tại thời gian biên dịch thì sao?
tôi biết làm thế nào để làm điều này với một đối tượng tùy chỉnh năng động (Tôi thực sự blogged about it một vài tháng trước), sử dụng các phương pháp của lớp DynamicObject
, nhưng làm thế nào tôi có thể làm điều đó với bất kỳ đối tượng động?
Tôi có thể sử dụng giao diện IDynamicMetaObjectProvider
, nhưng tôi không hiểu cách sử dụng nó. Ví dụ, đối số nào tôi nên chuyển sang phương thức GetMetaObject
? (nó mong đợi một Expression
)
Và bằng cách này, làm thế nào để bạn thực hiện sự phản chiếu trên các đối tượng động? Phản xạ "thông thường" và TypeDescriptor
không hiển thị thành viên năng động ...
Mọi thông tin chi tiết sẽ được đánh giá cao!
Trong C# 6.0, * có thể là * bạn có thể viết nó như 'foo. $ Bar = 42;' :) Không chắc chắn nó có được phép ... – nawfal
@nawfal, thực sự, tính năng đó đã bị xóa. Nhưng dù sao, 'foo. $ Bar' chỉ là viết tắt của' foo ["Bar"] ' –
Thomas, không biết về tính năng bị bỏ (tôi rất vui vì nó), nhưng ồ phải, trong một khoảnh khắc Tôi đã bỏ qua yêu cầu thực sự của q của bạn. – nawfal