Я сделал класс генератора, который строит прокси-класс на основе интерфейса, реализующего интерфейс.Reflection Emit: как преобразовать экземпляр атрибута в CustomAttributeBuilder или CustomAttributeData
Посмотреть мое сообщение на Build a Proxy class based on Interface without implementing it.
Я знаком с CustomAttributeData.GetCustomAttributes(MemberInfo target)
, я использовал его, когда читал члены интерфейса и им удалось импортировать их в прокси.
Я хочу добавить дополнительные атрибуты сгенерированного класса во время выполнения. Я прошу экземпляры атрибутов ввести их в прокси.
Например:
Разработчик может передать это в качестве значения: new ObsoleteAttribute("Demo", true)
, (он имеет пустой конструктор, но свойства только для чтения), и я хочу, чтобы преобразовать его в:
return new CustomAttributeBuilder(
attribute.GetType().GetConstructor(Type[] {typeof (string), typeof (bool)}),
new object[] {"Demo", true},
new FieldInfo[0],
new object[0]);
Помните, я не могу сказать, что дано.
Вы спрашиваете, как добавить атрибуты уже созданного класса ('type') или класс, вы в настоящее время здание (' TypeBuilder') ? – svick
Я сейчас строю его – Ofir
Есть ли что-то особенно запутанное в перегрузках конструктора 'CustomAttributeBuilder'? Я бы ожидал, что они будут понятны. – kvb