2012-04-25 95 views
1

此刻我正在爲我的mvc應用程序編寫自己的ValidationAttribute。將枚舉/編譯值作爲參數傳遞給構造函數

我有以下ValidationAttribute代碼。

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false)] 
public class RecordAttribute: ValidationAttribute 
{ 

    public UniqueDataRecordAttribute(string primaryKeyProperty) 
    { 

    } 
} 

我將我的主屬性的字段名稱作爲字符串傳遞給我的屬性並進行sone驗證。 例如: -

[RecordAttribute("CustomerID")] 
public class CustomerMetaData 
{ 


} 

這對我的作品,但我會遇到問題,如果主鍵的名稱將發生變化。

我創建了一個包含主鍵屬性的枚舉。但是,當我試圖通過它的編譯器告訴我:

的屬性參數必須是常量表達式的typeof屬性參數類型的表達 或數組創建表達式

我也試過這個方法:Associating enums with strings in C#但效果是一樣的。

是否有機會將枚舉(或其他編譯值)傳遞給我的屬性?

謝謝

+0

爲什麼會主鍵變化的名稱。這種東西你修好的地方,所以它不會改變....? – 2012-04-26 07:11:43

回答

0

你想要做這樣的事嗎?

[RecordAttribute(Keys.CustomerID.ToString())] 
public class CustomerMetaData 
{ 
} 

這將不起作用,因爲Keys.CustomerID.ToString()返回的字符串不是常量。

而不是一個枚舉你可以使用靜態類的常量字符串字段?

static class Keys { 
    public const string CustomerID = "CustomerID"; 
} 

那麼這將工作:

[RecordAttribute(Keys.CustomerID)] 
public class CustomerMetaData 
{ 
} 
相關問題