是否可以在自定义属性类中获取装饰类的类型? 例如:
[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
}
}
在以下示例中,GetDecorated Class Type()将返回HomeView
[View]
HomeView MyHomeView { get; set; }
答案 0 :(得分:3)
你不能在构造函数中将它添加为参数吗?
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)
答案 1 :(得分:1)
看到这个answer,我倾向于同意,在反思时你应该有权访问属性所适用的成员信息。