Установка свойства атрибута в тип оформленного класса


Можно ли получить тип декорированного класса внутри класса пользовательского атрибута? Например:

[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 2

2 ответа:

Смотрите этот Ответ, я склонен согласиться, что в момент размышления вы должны иметь доступ к информации о члене, к которому применяется атрибут.

Не могли бы вы добавить его в качестве аргумента в конструкторе?

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; }
Я знаю, что это не совсем элегантно, но будет ли этого достаточно? (И вы, вероятно, должны сделать сеттер для модуля private)