2017-02-16 28 views
0

我有這樣如何從RegularExpressionAttribute中提取正則表達式?

public class Foo 
{ 
    [RegularExpression(@"([A-Za-z0-9\-_ ]+){1,100}")] 
    public string Bar { get; set; } 
} 

類和單元測試的目的,我希望能夠把解壓出來的"@"([A-Za-z0-9\-_ ]+){1,100}"

我知道這有點像

string expr = typeof(Foo).GetProperty("Bar")..... 

,但我不太知道如何去完成它。

回答

1
var property = typeof(Foo).GetProperty("Bar"); 
var attribute = property.GetCustomAttribute<RegularExpressionAttribute>(); 
var expr = attribute?.Pattern; 

或者單個語句:

var expr = typeof(Foo).GetProperty("Bar") 
         .GetCustomAttribute<RegularExpressionAttribute>()?.Pattern; 

注:我不認爲從單元測試的屬性的屬性,你應該提取數據。我要麼將驗證測試的屬性驗證。或者使用類似Validator的類來實際運行對象上的驗證。

相關問題