gpt4 book ai didi

c# - 从其他属性的代码中测试属性

转载 作者:太空狗 更新时间:2023-10-29 21:51:24 24 4
gpt4 key购买 nike

是否可以在另一个属性的代码中测试一个属性是否存在?

假设您有以下类定义:

public class Inception {
[Required]
[MyTest]
public int Levels { get; set; }
}
public class MyTestAttribute : ValidationAttribute {
public override bool IsValid(object o){
// return whether the property on which this attribute
// is applied also has the RequiredAttribute
}
}

... MyTestAttribute.IsValid 是否可以确定 Inception.Levels 是否具有 RequiredAttribute?

最佳答案

ValidationAttribute 的特定情况下,这是可能的,但您必须使用另一个具有上下文参数的 IsValid 重载。上下文可用于获取包含类型,还可以获取应用特性的属性的名称。

protected override ValidationResult IsValid(object value, 
ValidationContext validationContext)
{
var requiredAttribute = validationContext.ObjectType
.GetPropery(validationContext.MemberName)
.GetCustomAttributes(true).OfType<RequiredAttribute>().SingleOrDefault();
}

关于c# - 从其他属性的代码中测试属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com