将 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。
如果您需要完整的示例并希望更好地解释用例,请告诉我。
我想将 属性 作为参数传递给另一个 属性 自定义属性,但我不能,因为它不是静态的 型号前:
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。
如果您需要完整的示例并希望更好地解释用例,请告诉我。