将 prop 作为参数传递给另一个 prop 自定义属性 c#

pass prop as param to another prop custom attribute c#

我想将 属性 作为参数传递给另一个 属性 自定义属性,但我不能,因为它不是静态的 型号前:

public class model1
{
     public DateTime param1 { get; set; }
     [CustomAttribute (param1)]
     public string param2 { get; set; }
}

public class CustomAttribute : ValidationAttribute
{
    private readonly DateTime _Date;
    public CustomAttribute(DateTime date)
    {
        _Date= date;
    }
}

因为我想在这两个属性之间进行自定义验证。

属性不存储为可执行代码,因此您可以在其中包含的数据类型有很大限制。

基本上,您必须坚持基本类型:字符串、数字、日期。一切皆可恒。

幸运的是,您可以使用一些反射和 nameof 运算符:

public class model1
{
     public DateTime param1 { get; set; }
     [CustomAttribute (nameof(param1))]
     public string param2 { get; set; }
}

public class CustomAttribute : ValidationAttribute
{
    private readonly string _propertyName;
    public CustomAttribute(string propertyName)
    {
        _propertyName = propertyName;
    }
}

请记住,验证逻辑应位于属性代码之外。

验证所需的成分将是 Type.GetProperties, PropertyInfo.GetValue, and MemberInfo.GetCustomAttribute

如果您需要完整的示例并希望更好地解释用例,请告诉我。