C#Reflection:如何从基类中获取派生类的属性

1 c# reflection

基本上我只想从基类的[Test]属性获取派生类的属性.

这是我的示例代码:

namespace TestConsole
{
    public class BaseClass
    {
        private System.Int64 _id;

        public BaseClass()
        { }

        [Test]
        public System.Int64 ID
        {
            get { return _id;}
            set { _id = value;}
        }

        public System.Xml.XmlNode ToXML()
        { 
            System.Xml.XmlNode xml = null;

            //Process XML here

            return xml;
        }
    }

    public class DerivedClass : BaseClass
    {
        System.String _name;

        public DerivedClass()
        { }

        [Test]
        public System.String Name
        {
            get { return _name; }
            set { _name = value; }
        }
    }

    public class TestConsole
    {
        public static void main()
        {
            DerivedClass derivedClass = new DerivedClass();

            System.Xml.XmlNode xmlNode = derivedClass.ToXML();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望xmlNode是这样的:

<root>
  <class name="DerivedClass">
    <Field name="Id">
    <Field name="Name">
  </class>
</root>
Run Code Online (Sandbox Code Playgroud)

谢谢

SLa*_*aks 8

您可以调用this.GetType().GetProperties()并调用GetCustomAttributes()每个PropertyInfo属性以查找具有该属性的属性.

您需要递归运行循环以扫描基类型的属性.