特别是当重写Asp.net MVC ValidationAttribute时,是否可以知道具有标记属性的字段的类名? (AttributeUsage是AttributeTargets.Property)
public class UniqueAttribute: ValidationAttribute
public override bool IsValid(object value)
{
// how to know which class has this attribute?
}
答案 0 :(得分:1)
给定一个属性的实例,不可能确定哪个类,字段,方法等......发起了这个属性。主要是因为它不需要附加到一个。所有属性都可以像普通对象一样创建,因此不会附加到任何内容
var instance = new UniqueAttribute();
您可能需要使用不同的构造函数,但必须存在一个或者首先不能将其应用于成员。
虽然可以走另一条路。给定成员或类型以查明是否应用了给定属性。例如,假设有一个UnqiueAttribute
个实例附加到类型SomeType
,此代码将检索它。
var type = typeof(SomeType);
var attrib = (UniqueAtrtibute)type.GetCustomAttributes(typeof(UnqiueAttribute),true)[0];
答案 1 :(得分:0)