Tôi đã có ExpandoObject mà tôi đang gửi đến một phương thức thư viện bên ngoài có đối tượng. Từ những gì tôi đã nhìn thấy lib bên ngoài này sử dụng TypeDescriptor.GetProperties nội bộ và dường như gây ra một số vấn đề với ExpandoObject của tôi.Hiển thị các thuộc tính của ExpandoObject
Tôi có thể đi với một đối tượng ẩn danh thay vào đó và điều đó có vẻ hiệu quả nhưng thuận tiện hơn cho tôi khi sử dụng ExpandoObject.
Tôi có cần xây dựng DynamicObject của riêng mình và tự chăm sóc bản thân bằng cách triển khai ICustomTypeDescriptor hoặc tôi thiếu thứ gì đó ở đây.
Ý tưởng?
Cập nhật
Bên cạnh những câu trả lời bằng somedave dưới đây (theo các ý kiến), tôi đã thêm lớp
public class ExpandoObjectTypeDescriptionProvider : TypeDescriptionProvider
{
private static readonly TypeDescriptionProvider m_Default = TypeDescriptor.GetProvider(typeof(ExpandoObject));
public ExpandoObjectTypeDescriptionProvider()
:base(m_Default)
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
var defaultDescriptor = base.GetTypeDescriptor(objectType, instance);
return instance == null ? defaultDescriptor :
new ExpandoObjectTypeDescriptor(instance);
}
}
này và đăng ký nó như thế này:
dynamic parameters = new ExpandoObject();
TypeDescriptor.AddProvider(new ExpandoObjectTypeDescriptionProvider(), parameters);
Bạn có danh sách tên thuộc tính khi kết thúc không? –
không phải trước thời gian (biên dịch thời gian) ... do đó ExpandoObject –