ใช่การสะท้อนกลับเป็นวิธีที่จะไป ก่อนอื่นคุณจะได้รับประเภท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ผู้ประกอบการเพื่อช่วยในการกำหนดชั้น / อินเทอร์เฟซพื้นฐานที่คุณทำงานด้วย รันไทม์)
อย่างไรก็ตามหากคุณไม่ได้ควบคุมคำจำกัดความประเภทเหล่านี้และต้องขับตรรกะตามการจับคู่รูปแบบนั่นก็ถือว่าใช้ได้