C# 将属性属性设置为修饰类的类型

C# 将属性属性设置为修饰类的类型,c#,custom-attributes,C#,Custom Attributes,是否可以在自定义属性的类中获取修饰类的类型? 例如: [MetadataAttribute] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property, AllowMultiple = false)] public class ViewAttribute : ExportAttribute { public object TargetRegion { get; set; } public Type Vi

是否可以在自定义属性的类中获取修饰类的类型? 例如:

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

不能将其作为参数添加到构造函数中吗

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

我知道它不太优雅,但这就足够了吗?(您可能应该将模块的setter设置为私有)

我倾向于同意,在反射点,您应该可以访问应用属性的成员信息。

私有setter仍然可以通过反射访问。为了避免这种情况,您可以将
模块
设置为一个带有
只读
支持字段的“getter-only”属性。。。