Tôi đã tạo một lớp máy phát điện để xây dựng một lớp proxy dựa trên giao diện thực hiện giao diện.Phản xạ Emit: làm thế nào để chuyển đổi thể hiện thuộc tính thành CustomAttributeBuilder hoặc CustomAttributeData
Xem bài đăng của tôi trên Build a Proxy class based on Interface without implementing it.
Tôi quen thuộc với CustomAttributeData.GetCustomAttributes(MemberInfo target)
, tôi đã sử dụng nó khi đọc thành viên của Giao diện và nhập thành công vào proxy.
Tôi muốn tiêm bổ sung thuộc tính vào lớp được tạo trong thời gian chạy. Tôi yêu cầu các trường hợp thuộc tính để tiêm chúng vào proxy.
Ví dụ:
Một nhà phát triển có thể chuyển thông tin này như một giá trị: new ObsoleteAttribute("Demo", true)
, (nó có một constructor rỗng, nhưng thuộc tính này được chỉ đọc), và tôi muốn chuyển nó sang:
return new CustomAttributeBuilder(
attribute.GetType().GetConstructor(Type[] {typeof (string), typeof (bool)}),
new object[] {"Demo", true},
new FieldInfo[0],
new object[0]);
Hãy nhớ rằng, tôi không thể nói những gì được đưa ra.
Có phải bạn hỏi làm thế nào để thêm các thuộc tính cho lớp đã được tạo ra ('Type') hoặc một lớp học mà bạn đang xây dựng (' TypeBuilder') ? – svick
Tôi hiện đang xây dựng nó – Ofir
Có điều gì đặc biệt khó hiểu về quá tải của hàm tạo 'CustomAttributeBuilder' không? Tôi đã mong đợi họ sẽ tự giải thích. – kvb