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”属性。。。