Fer*_*ryt 4 .net reflection attributes
我需要检查属性是否在其伙伴类中定义了特定属性:
[MetadataType(typeof(Metadata))]
public sealed partial class Address
{
private sealed class Metadata
{
[Required]
public string Address1 { get; set; }
[Required]
public string Zip { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
如何检查哪些属性已定义Required
属性?
谢谢.
可以使用嵌套类型的探索来完成:
public IEnumerable<PropertyInfo> GetRequiredProperties()
{
var nestedTypes = typeof(Address).GetNestedTypes(BindingFlags.NonPublic);
var nestedType = nestedTypes.First(); // It can be done for all types
var requiredProperties =
nestedType.GetProperties()
.Where(property =>
property.IsDefined(typeof(RequiredAttribute), false));
return requiredProperties;
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
[Test]
public void Example()
{
var requiredProperties = GetRequiredProperties();
var propertiesNames = requiredProperties.Select(property => property.Name);
Assert.That(propertiesNames, Is.EquivalentTo(new[] { "Address1", "Zip" }));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2362 次 |
最近记录: |