Tôi biết có một số câu hỏi giải quyết vấn đề này, nhưng câu trả lời thường tuân theo các dòng giới thiệu từ điển hoặc tập hợp các tham số, không hoạt động trong tình huống của tôi.Tự động thêm thuộc tính C# tại thời gian chạy
Tôi đang sử dụng thư viện hoạt động thông qua sự phản chiếu để thực hiện rất nhiều điều thông minh với các đối tượng có thuộc tính. Điều này làm việc với các lớp được định nghĩa, cũng như các lớp động. Tôi cần thực hiện thêm một bước nữa và thực hiện điều gì đó dọc theo các dòng sau:
public static object GetDynamicObject(Dictionary<string,object> properties) {
var myObject = new object();
foreach (var property in properties) {
//This next line obviously doesn't work...
myObject.AddProperty(property.Key,property.Value);
}
return myObject;
}
public void Main() {
var properties = new Dictionary<string,object>();
properties.Add("Property1",aCustomClassInstance);
properties.Add("Property2","TestString2");
var myObject = GetDynamicObject(properties);
//Then use them like this (or rather the plug in uses them through reflection)
var customClass = myObject.Property1;
var myString = myObject.Property2;
}
Thư viện hoạt động tốt với loại biến động, với thuộc tính được gán theo cách thủ công. Tuy nhiên tôi không biết bao nhiêu hoặc những gì tài sản sẽ được thêm trước.
+1. Lưu ý: Tại sao bạn không trả lại một từ điển thay vì năng động? (ít nhất, IDictionary)? Ý tôi là, trở về động là một chút "gây hiểu lầm", vì bạn sẽ luôn trả về một từ điển. – Veverke