Установка свойства атрибута для типа декорированного класса - PullRequest
2 голосов
/ 21 мая 2010

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

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

3 голосов
/ 21 мая 2010

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

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; }

Я знаю, что это не совсем элегантно, но хватит ли этого? (И вы, вероятно, должны сделать установщик для модуля частным)

1 голос
/ 21 мая 2010

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

...