ใช่การสะท้อนกลับเป็นวิธีที่จะไป ก่อนอื่นคุณจะได้รับประเภทType
ที่แทนประเภท (ณ รันไทม์) ของอินสแตนซ์ในรายการ คุณสามารถทำได้โดยการเรียกวิธีการในการGetType
Object
เนื่องจากมันอยู่ในObject
คลาสจึงสามารถเรียกได้โดยวัตถุทุกชิ้นใน. NET เนื่องจากทุกประเภทมาจากObject
( ดีในทางเทคนิคไม่ใช่ทุกอย่างแต่นั่นไม่ใช่สิ่งสำคัญที่นี่)
เมื่อคุณมีType
ตัวอย่างเช่นคุณสามารถเรียกGetProperties
วิธีการที่จะได้รับPropertyInfo
กรณีที่เป็นตัวแทนของ informationa Type
เวลาทำงานเกี่ยวกับคุณสมบัติของบน
หมายเหตุคุณสามารถใช้ทับถมของGetProperties
ความช่วยเหลือประเภทซึ่งคุณสมบัติที่คุณเรียก
จากนั้นคุณก็จะเขียนข้อมูลออกไปยังไฟล์
รหัสของคุณด้านบนแปลแล้วจะเป็น:
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
โปรดทราบว่าหากคุณต้องการข้อมูลวิธีการหรือข้อมูลภาคสนามคุณจะต้องเรียกใช้หนึ่งใน overloads ของGetMethods
หรือGetFields
วิธีการตามลำดับ
โปรดทราบว่ามีสิ่งหนึ่งที่จะแสดงรายการสมาชิกไปยังไฟล์ แต่คุณไม่ควรใช้ข้อมูลนี้เพื่อขับเคลื่อนตรรกะตามชุดคุณสมบัติ
สมมติว่าคุณมีการควบคุมการใช้งานของประเภทคุณควรได้รับมาจากคลาสฐานทั่วไปหรือใช้อินเตอร์เฟซที่พบบ่อยและทำการโทรบนเหล่านั้น (คุณสามารถใช้as
หรือis
ผู้ประกอบการเพื่อช่วยในการกำหนดชั้น / อินเทอร์เฟซพื้นฐานที่คุณทำงานด้วย รันไทม์)
อย่างไรก็ตามหากคุณไม่ได้ควบคุมคำจำกัดความประเภทเหล่านี้และต้องขับตรรกะตามการจับคู่รูปแบบนั่นก็ถือว่าใช้ได้