سؤال

أتذكر أنني رأيت منذ فترة أن هناك طريقة ما في مساحة اسم الانعكاس التي يمكن تشغيلها بشكل متكرر ToString() على كافة خصائص الكائن وتنسيقه بشكل جيد للعرض.

نعم، أعلم أن كل ما أريده سيكون متاحًا من خلال مصحح الأخطاء، لكنني أتساءل عما إذا كان أي شخص يعرف هذا الأمر؟

هل كانت مفيدة؟

المحلول

أعتقد أن ما تبحث عنه هو/كان يسمى ObjectDumper.يستخدم الانعكاس للتكرار وإخراج كافة الخصائص المختلفة لكائن ما.سمعت عنها لأول مرة عندما كنت أتعلم LINQ، ومعظم الأمثلة الموجودة في كتاب Linq in Action تستخدمه.

يبدو أن Microsoft لم تدرجه في الإصدار النهائي من Linq، لكن الكود لا يزال متاحًا.لقد قمت ببحث سريع في جوجل عنه وهذا رابطه:

كود مصدر ObjectDumper

نصائح أخرى

يمكن العثور على رمز المثال لتفريغ كائن وخصائصه هنا:

http://www.developer.com/net/csharp/article.php/3713886

يمكنك كتابتها بنفسك.على سبيل المثال، قم بإجراء تسلسل لها في json باستخدام مكتبة JSON.net الخاصة بـ Newtonsoft واكتب ملف json هذا إلى وحدة التحكم.هنا مثال:

using Newtonsoft.Json;

static class Pretty
{
    public static void Print<T> (T x)
    {
        string json = JsonConvert.SerializeObject(x, Formatting.Indented);
        Console.WriteLine(json);
    }
}

الاستخدام:

Pretty.Print(whatever);

يمكنني بالتأكيد رؤية الاستخدام في مثل هذا الشيء، ولكن في .Net، ألن تحصل في الغالب على قائمة بأسماء الأنواع (String، Array، إلخ)؟معظم العناصر المضمنة لا تحتوي على حمولات زائدة "مفيدة" لـ ToString() مكتوبة مسبقًا، أليس كذلك؟

فيما يلي رابط يحتوي على أداة تفريغ التعليمات البرمجية ومشروع تجريبي يوضح لك كيفية استخدامه. قم بتنزيله هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top