目前我正在为我的mvc应用程序编写自己的ValidationAttribute。
我有以下ValidationAttribute代码。
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false)]
public class RecordAttribute: ValidationAttribute
{
public UniqueDataRecordAttribute(string primaryKeyProperty)
{
}
}
我将主要属性的字段名称作为字符串传递给我的属性并进行sone验证。 E.g:
[RecordAttribute("CustomerID")]
public class CustomerMetaData
{
}
这对我有用,但如果主键名称发生变化,我会遇到问题。
我创建了一个包含主键属性的枚举。但是当我尝试传递它时,编译器告诉我:
属性参数必须是常量表达式,typeof表达式 或属性参数类型
的数组创建表达式
我也试过这种方法:Associating enums with strings in C#但效果是一样的。
有没有机会将枚举(或其他编译值)传递给我的属性?
谢谢
答案 0 :(得分:0)
你想做这样的事吗?
[RecordAttribute(Keys.CustomerID.ToString())]
public class CustomerMetaData
{
}
这不起作用,因为Keys.CustomerID.ToString()返回的字符串不是常量。
您可以使用静态类的const字符串字段而不是枚举吗?
static class Keys {
public const string CustomerID = "CustomerID";
}
然后这将起作用:
[RecordAttribute(Keys.CustomerID)]
public class CustomerMetaData
{
}