我想知道C#是否支持以下可选属性
public class Person
{
public string Name { get; set;}
public optional string NickName { get; set;}
...many more properties...
}
Run Code Online (Sandbox Code Playgroud)
所以当我创建一个Person对象时,我可以在一个简单的循环中轻松检查输入值的有效性
public bool IsInputOK(Person person)
{
foreach( var property in person.GetType().GetProperties())
{
if( property.IsOptional())
{
continue;
}
if(string.IsNullOrEmpty((string)property.GetValue(person,null)))
{
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
我在谷歌搜索但没有得到理想的解决方案.我是否真的必须手动为每个属性处理代码验证代码?
谢谢.
Eli*_*sha 23
您可以使用您定义的属性修饰这些属性,并将属性标记为可选.
[AttributeUsage(AttributeTargets.Property,
Inherited = false,
AllowMultiple = false)]
internal sealed class OptionalAttribute : Attribute
{
}
public class Person
{
public string Name { get; set; }
[Optional]
public string NickName { get; set; }
}
public class Verifier
{
public bool IsInputOK(Person person)
{
foreach (var property in person.GetType().GetProperties())
{
if (property.IsDefined(typeof(OptionalAttribute), true))
{
continue;
}
if (string.IsNullOrEmpty((string)property.GetValue(person, null)))
{
return false;
}
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
您可能还想查看具有类似功能的验证应用程序块.
| 归档时间: |
|
| 查看次数: |
13514 次 |
| 最近记录: |