我有一个像
这样的课程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").....
但我不太清楚如何完成它。
答案 0 :(得分: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类这样的东西来实际运行对象的验证。