我如何从 DataAnnotations 中获取验证?我在这里研究,但我不明白它是如何工作的
所以我希望你们中的一些人能启发我
这是我当前的测试代码:
模型
public class Person // Represents person data.
{
/// <summary>
/// Gets or sets the person's first name.
/// </summary>
/// <remarks>
/// Empty string or null are not allowed.
/// Allow minimum of 2 and up to 40 uppercase and lowercase.
/// </remarks>
[Required]
[RegularExpression(@"^[a-zA-Z''-'\s]{2,40}$")]
public string FirstName{ get; set;}
/// <summary>
/// Gets or sets the person's last name.
/// </summary>
/// <remarks>
/// Empty string or null are not allowed.
/// </remarks>
[Required]
public string LastName { get; set;}
public int Age{ get; set;}
}
看法
<Window x:Class="DataAnnotationstest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DataAnnotationstest"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:Person FirstName="Tomer" LastName="Shamam" />
</Window.DataContext>
<Grid>
<StackPanel Margin="4,4,51,4">
<TextBox Text="{Binding FirstName, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding LastName, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding Age, ValidatesOnDataErrors=True}" />
</StackPanel>
</Grid>
</Window>
我需要对 Person 实现其他东西吗?我在这里找到了以下代码,但就像我之前说的那样,我不明白它是如何工作的-.-
public static T GetAttributeFrom<T>(this object instance, string propertyName) where T : Attribute
{
var attrType = typeof(T);
var property = instance.GetType().GetProperty(propertyName);
return (T)property .GetCustomAttributes(attrType, false).First();
}