如何获得可变属性值

本文关键字:属性 何获得 | 更新日期: 2023-09-27 18:05:58

我的目标是获得类属性属性和它的值。

例如,如果我有一个属性'Bindable'来检查属性是否可绑定:

public class Bindable : Attribute
{
    public bool IsBindable { get; set; }
}

我有一个Person类

public class Person
{
    [Bindable(IsBindable = true)]
    public string FirstName { get; set; }
    [Bindable(IsBindable = false)]
    public string LastName { get; set; } 
}

我怎么能得到FirstName和LastName的'Bindable'属性值?

    public void Bind()
    {
        Person p = new Person();
        if (FirstName property is Bindable)
            p.FirstName = "";
        if (LastName property is Bindable)
            p.LastName = "";
    }

谢谢。

如何获得可变属性值

实例没有单独的属性-您必须询问类型的成员(例如Type.GetProperties),并询问这些成员的属性(例如PropertyInfo.GetCustomAttributes)。

编辑:根据评论,MSDN上有一个关于属性的教程。

您可以这样尝试:

     public class Bindable : Attribute
        {
            public bool IsBindable { get; set; }
        }
        public class Person
        {
            [Bindable(IsBindable = true)]
            public string FirstName { get; set; }
            [Bindable(IsBindable = false)]
            public string LastName { get; set; }
        }
        public class Test
        {
            public void Bind()
            {
                Person p = new Person();
                foreach (PropertyInfo property in p.GetType().GetProperties())
                {
                   try
                   {
                       Bindable _Attribute = (Bindable)property.GetCustomAttributes(typeof(Bindable), false).First();
                       if (_Attribute.IsBindable)
                       {
                            //TODO
                       }
                    }
                    catch (Exception) { }
                }
            }
        }