در حین توسعهی کتابخانهی PdfReport نیاز به یک کتابخانهی Reflection سریع با پشتیبانی از خواصی خصوصا تو در تو بود. حاصل مطلب « دسترسی سریع به مقادیر خواص توسط Reflection.Emit » تبدیل به کتابخانهی FastReflection ذیل شد که هم اکنون در PdfReport مورد استفاده است:
FastReflection.zip
متد DumpPropertyValues ، توسط روشهای Reflection.Emit تا تعداد سطحی را که مشخص میکنید، از شیء ارسالی به آن استخراج میکند. مباحث caching و استفاده مجدد از کدهای پویای تولید شده، در آن لحاظ شده و همچنین dumpLevel آن، از stack overflow در حین کار با پروکسیهای پویای Entity framework جلوگیری میکند.
FastReflection.zip
// کار با یک لیست جنریک تو در تو var list = new List<User>(); for (int i = 0; i < 100; i++) { list.Add(new User { Id = i+1, Name = "name "+i, Address = new Address { Address1 = "Addr1- "+i, Address2 = "Addr2- "+i } }); } foreach (var item in list) { var propertyValues = new DumpNestedProperties().DumpPropertyValues(item, dumpLevel: 2); foreach (var result in propertyValues) { Console.WriteLine(result.PropertyName + " -> " + result.PropertyValue); } Console.WriteLine(); }