استخدام سمة DebuggerTypeProxy
ينطبق هذا الموضوع على:
النسخة |
Visual Basic |
C# |
#F |
C++ |
مطور الويب |
---|---|---|---|---|---|
Express |
|||||
pro ، Premium و Ultimate |
DebuggerTypeProxyAttribute تعيّن الوكيل أو stand-in ، للحصول نوع وتغيير الطريقة نوع عرض في إطارات مصحح الأخطاء. عند عرض متغير يحتوي وكيل الوكيل يرمز الأصلي نوع في عرض. نافذة متغير المصحح يعرض العام لأعضاء نوع الوكيل. لا يتم عرض خاص الأعضاء.
يمكن تطبيق هذه سمة إلى:
البنيات
الفئات
التجميعات
يجب أن يكون نوع فئة وكيل الدالة الإنشائية الذي يأخذ وسيطة من النوع الذي سيتم استبدال الوكيل. مصحح الأخطاء إنشاء مثيل جديد من فئة الوكيل نوع كل مرة يحتاج إلى عرض فمتغير من نوع الهدف. يمكن أن يكون ذلك ضمانات الأداء. وكنتيجة لذلك، يجب أن لا تفعل أي عمل زائد في المنشئ.
لتقليل شديدة الأداء لا فحص مقيم التعبير السمات تشغيل وكيل عرض من نوع إلا نوع موسّع بالنقر مستخدم + رمز في نافذة مصحح الأخطاء أو بواسطة الاستخدام DebuggerBrowsableAttribute. لذلك، يجب أن لا وضع السمات تشغيل نوع عرض نفسه. سمات يمكن ويُستخدم في نص نوع عرض.
إنها لفكرة بضاعة لوكيل نوع إلى يكون فئة خاصة متداخلة داخل الفئة التي أهداف سمة. يسمح هذا إلى الوصول إلى الأعضاء داخلي بسهولة.
اذا DebuggerTypeProxyAttribute يُستخدم في المستوى تجميع Target تعيّن معلمة نوع الذي سيتم استبدال الوكيل.
للحصول مثال حول استخدام هذه سمة مع DebuggerDisplayAttribute و DebuggerTypeProxyAttribute، راجعاستخدام سمة DebuggerDisplay.
باستخدام عام مع DebuggerTypeProxy
دعم عام يقتصر. لـ C# DebuggerTypeProxy اعتماد فتح أنواع فقط. هو نوع فتح ، تسمى أيضاً على نوع غير مبني و هو نوع عام له لا يتم إنشاء بوسيطات لمعلمات النوع الخاص به. لا يتم اعتماد أنواع مغلق أيضًا استدعاء أنواع مكونة.
بناء الجملة من أجل فتح نوع يبدو بهذا الشكل:
Namespace.TypeName<,>
إذا كنت تستخدم نوع عام كهدف في DebuggerTypeProxy، يجب استخدام بناء الجملة التالي. DebuggerTypeProxy آلية تدل معلمات نوع نيابة عنك.
للحصول تشغيل مزيد من المعلومات حول فتح وأنواع مغلق في C# راجعمواصفات اللغة C#، مقطع 20.5.2 فتح أنواع إغلاقه.
لم يكن Visual Basic فتح اكتب بناء الجملة, حتى تتمكن من القيام بنفس الشيء في Visual Basic. بدلاً من ذلك، يجب استخدام تمثيل سلسلة اسم النوع المفتوح.
"Namespace.TypeName'2"