繁体   English   中英

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

[英]C# attribute: how to know class name which has field marked with attribute

尤其是在重写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?
        }

给定属性的实例,就无法确定该属性是由什么类,字段,方法等组成的。 主要是因为它不需要附加到一个。 可以像创建普通对象一样创建所有属性,因此不附加任何属性

var instance = new UniqueAttribute();

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

但是,可以采取另一种方式。 给定成员或类型以查找是否已将给定属性应用于该成员或类型。 例如,假定有一个UnqiueAttribute实例附加到SomeType类型, SomeType此代码将检索它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM