Reflection Emit: jak przekonwertować instancję atrybutu na CustomAttributeBuilder lub CustomAttributeData

Zrobiłem klasę generatora, która buduje klasę proxy opartą na interfejsie, który implementuje interfejs.

Zobacz mój post naZbuduj klasę proxy na podstawie interfejsu bez jej implementacji.

Znam toCustomAttributeData.GetCustomAttributes(MemberInfo target), Użyłem go, gdy czytałem członków Interfejsu i udało mi się zaimportować je do serwera proxy.

Chcę wstrzyknąćdodatkowy atrybuty do wygenerowanej klasy w czasie wykonywania. Pytam o instancje atrybutów, aby wprowadzić je do proxy.

Na przykład:

Deweloper może przekazać to jako wartość:new ObsoleteAttribute("Demo", true), (ma pusty konstruktor, ale właściwości są tylko do odczytu) i chcę go przekonwertować na:

return new CustomAttributeBuilder(
               attribute.GetType().GetConstructor(Type[] {typeof (string), typeof (bool)}),
               new object[] {"Demo", true},
               new FieldInfo[0], 
               new object[0]);

Pamiętaj, nie mogę powiedzieć, co jest podane.

questionAnswers(3)

yourAnswerToTheQuestion