Установка свойства атрибута в тип оформленного класса
Можно ли получить тип декорированного класса внутри класса пользовательского атрибута? Например:
[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false)]
public class ViewAttribute : ExportAttribute
{
public object TargetRegion { get; set; }
public Type ViewModel { get; set; }
public Type Module { get; set; }
public ViewAttribute()
: base(typeof(UserControl))
{
Module = GetDecoratedClassType(); //I need this method
}
}
В следующем примере GetDecoratedClassType () вернет HomeView
[View]
HomeView MyHomeView { get; set; }
2 ответа:
Смотрите этот Ответ, я склонен согласиться, что в момент размышления вы должны иметь доступ к информации о члене, к которому применяется атрибут.
Не могли бы вы добавить его в качестве аргумента в конструкторе?
Я знаю, что это не совсем элегантно, но будет ли этого достаточно? (И вы, вероятно, должны сделать сеттер для модуля private)public class ViewAttribute : ExportAttribute { public object TargetRegion { get; set; } public Type ViewModel { get; set; } public Type Module { get; set; } public ViewAttribute(Type decoratedClassType) : base(typeof(UserControl)) { Module = decoratedClassType } } [View(typeof(HomeView))] HomeView MyHomeView { get; set; }