C#属性:如何知道具有标记属性的字段的类名

时间:2010-08-22 18:56:02

标签: c# asp.net-mvc attributes

特别是当重写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?
        }

2 个答案:

答案 0 :(得分:1)

给定一个属性的实例,不可能确定哪个类,字段,方法等......发起了这个属性。主要是因为它不需要附加到一个。所有属性都可以像普通对象一样创建,因此不会附加到任何内容

var instance = new UniqueAttribute();

您可能需要使用不同的构造函数,但必须存在一个或者首先不能将其应用于成员。

虽然可以走另一条路。给定成员或类型以查明是否应用了给定属性。例如,假设有一个UnqiueAttribute个实例附加到类型SomeType,此代码将检索它。

var type = typeof(SomeType);
var attrib = (UniqueAtrtibute)type.GetCustomAttributes(typeof(UnqiueAttribute),true)[0];

答案 1 :(得分:0)