c# - 获取属性的参数和值

标签 c# system.reflection

您好,我正在使用反射来迭代此模型的属性的属性:

[Required(ErrorMessage = "Username is required")]
[MaxLength(50, ErrorMessage = "Username should not have more then 50 chars")]
[MinLength(25 , ErrorMessage = "Username should have at least 25 chars")]
 public string UserName { get; set; }

 [Required(ErrorMessage = "Password is required")]
 [StringLength(25)]
 public string Password { get; set; }

 public bool RememberMe { get; set; }

foreach (var propertyInfo in type)
       var attr = propertyInfo.CustomAttributes;
       foreach (var customAttributeData in attr)
       {
             var name = customAttributeData.AttributeType.Name;
       }
}

我设法获取了属性名称,但在获取属性构造函数参数的键/值对时遇到了麻烦。

我如何才能访问属性的构造函数参数和值?

一个示例是能够从必需属性 ErrorMessage.Name 和 ErrorMessage.Value 获取:

最佳答案

您可以使用MemberInfo.NameTypedValue.Value。这是代码:

foreach (var propertyInfo in typeof(YOUR CLASS).GetProperties())
{
    var attr = propertyInfo.GetCustomAttributesData();

    foreach (var customAttributeData in attr)
    {
        foreach (var item in customAttributeData.NamedArguments)
        {
            var name = item.MemberInfo.Name;
            var value = item.TypedValue.Value;
        }
    }
}

关于c# - 获取属性的参数和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17171295/

相关文章:

c# - Visual Studio 2017 阻止调试器在 Activator.CreateInstance 异常时停止

c# - GenericArguments[0], 'MvcApplication66.Controllers.HomeController+Info' , 在 'System.Nullable` 1[T ]' violates the constraint of type parameter ' T'

compiler-errors - 为什么我得到System.InvalidProgramException : Common Language Runtime detected an invalid program

.net-assembly - 在PCL中获取程序集版本

c# - 备份和恢复mysql数据库c#

c# - 进行服务器端验证而不丢失回发数据

C# 打印空格/缩进

asp.net - 使用 PostgreSql 的 Simple.Data 中的 ReflectionTypeLoadException

c# - C# 和 VB 中的锯齿状数组 CLS 合规性不同?

c# - User.Identity.Name 非静态字段需要对象引用