Visual Studio:كيف يمكنني إظهار جميع الطبقات الموروثة من قاعدة الفصل ؟

StackOverflow https://stackoverflow.com/questions/282377

سؤال

في Visual Studio, كيف يمكنني مشاهدة جميع الطبقات الموروثة من قاعدة الفصل ؟

على سبيل المثال, في ASP.NET MVC هناك عدة 'ActionResult'أنواع-وهم جميع ترث من / تنفيذ قاعدة الطبقة ActionResult.

يبدو إلا إذا كنت فقط أعرف ' أن View و Json صالحة ActionResult أنواع, لا توجد وسيلة يمكنك بسهولة العثور على هذه المعلومات.

يرجى يثبت لي خطأ.

هل هناك شيء في "مستعرض الكائنات" أن يجعل هذا من السهل معرفة ؟

أنا حتى يصل للحصول على اقتراحات من أدوات خارج Visual Studio لاكتشاف هذه المعلومات عن مختلف الطبقات.على سبيل المثال:هل هناك شيء في Resharper من شأنها أن تساعدني ؟

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

المحلول

وبالتأكيد، Resharper يمكن القيام بذلك. وأكثر من ذلك بكثير.

وفقط حق انقر على اسم نوع في أي مكان واختر "الذهاب إلى ريث" في قائمة السياق. "الذهاب إلى ريث" يمكن تطبيقها أيضا على طريقة لتبحر إلى تجاوزات وتطبيقات طريقة بالواجهة. لواجهة يمكن أن تسميه "البحث المتقدم الأعراف" مرة أخرى، فوق الحق فقط) أين تجد كل extendings والتنفيذ. لنوع - أنواع مشتقة. وميزة المفضلة - انقر فوق بعقد تحكم على أي نوع / طريقة التنقل إلى إعلانها

واعتقد انها وسيلة يجب أن يكون للمطورين صافي.


في Resharper 9.2، على أي نوع في شفرة المصدر، غ مزدوجا فوق "البحث عن الاستخدام المتقدم"، حدد البحث = "مشتقة" ونطاق = "حلول والمكتبات".
على سبيل المثال، للعثور على جميع الورثة (سواء في المكتبة والتعليمات البرمجية) من بعض الفئة الأساسية في DLL المضمنة من أي بائع، بتعريف متغير في التعليمات البرمجية مع أن الفئة الأساسية. ثم انقر بزر الماوس الأيمن على أن اسم الفئة الأساسية كتبته فقط.

نصائح أخرى

بالنسبة VS2012,

  1. انتقل إلى الملف في "مستكشف الحلول"
  2. وتوسيع اختر الفئة الخاصة بك
  3. انقر بزر الماوس الأيمن على الطبقة البند (وليس عنصر ملف) -> مشتقة أنواع

وأنت لا تحتاج بالضرورة العاكس لهذا - عرض مرئي استوديو "الفئة مخطط" سوف تتيح لك العثور بسهولة على جميع الفئات المشتقة لفئة معينة أيضا. انقر بزر الماوس الأيمن على الطبقة في "عرض فئة" واختيار "عرض فئة الرسم". إذا لم تظهر الرسم البياني مستوى التفاصيل التي تريدها عن التسلسل الهرمي، انقر بالزر الأيمن على مربع للفئة في الرسم البياني، واختيار "إظهار الفئات المشتقة".

قد لا تكون مباشرة كما Resharper، لكنه خيار إذا لم يكن لديك R # بالفعل.

للأسف، أنا لست على يقين مما إصدارات معينة من Visual Studio يكون ذلك.

هذا هو الأقل كسول الجواب (أنا فخور بهذا الجواب :)

ليس لدي ReSharper حاولت ذلك من قبل ولكن لم ترغب في شرائه.حاولت فئة الرسم ولكن ليس عمليا على الإطلاق لأن التسلسل الهرمي مخطط يمتد العالم 3 مرات على جهاز الكمبيوتر المحمول شاشة لا يكون لانهائي العرض.لذا طبيعية وسهلة الحل هو كتابة بعض نماذج Windows رمز إلى تكرار أكثر من الأنواع في تجميع و استخدام انعكاس إضافة العقد إلى طريقة عرض الشجرة ، على النحو التالي:

يرجى نفترض أن لديك مربع نص عرض شجرة وغيرها من الأمور المطلوبة في نموذج في تشغيل هذه التعليمة البرمجية

//Go through all the types and either add them to a tree node, or add a tree
//node or more to them depending whether the type is a base or derived class.
//If neither base or derived, just add them to the dictionary so that they be
//checked in the next iterations for being a parent a child or just remain a
//root level node.

var types = typeof(TYPEOFASSEMBLY).Assembly.GetExportedTypes().ToList();
Dictionary<Type, TreeNode> typeTreeDictionary = new Dictionary<Type, TreeNode>();
foreach (var t in types)
{
    var tTreeNode = FromType(t);
    typeTreeDictionary.Add(t, tTreeNode);

    //either a parent or a child, never in between
    bool foundPlaceAsParent = false;
    bool foundPlaceAsChild = false;
    foreach (var d in typeTreeDictionary.Keys)
    {
        if (d.BaseType.Equals(t))
        {
            //t is parent to d
            foundPlaceAsParent = true;
            tTreeNode.Nodes.Add(typeTreeDictionary[d]);
            //typeTreeDictionary.Remove(d);
        }
        else if (t.BaseType.Equals(d))
        {
            //t is child to d
            foundPlaceAsChild = true;
            typeTreeDictionary[d].Nodes.Add(tTreeNode);
        }
    }

    if (!foundPlaceAsParent && !foundPlaceAsChild)
    {
        //classHierarchyTreeView.Nodes.Add(tn);
    }
}

foreach (var t in typeTreeDictionary.Keys)
{
    if (typeTreeDictionary[t].Level == 0)
    {
        classHierarchyTreeView.Nodes.Add(typeTreeDictionary[t]);
    }
}

StringBuilder sb = new StringBuilder();
foreach (TreeNode t in classHierarchyTreeView.Nodes)
{
    sb.Append(GetStringRepresentation(t, 0));
}
textBox2.Text = sb.ToString();

وانطلاقا من "البصرية ستوديو 2015 تحديث 1" يمكنك ببساطة انقر بالزر الأيمن على اسم فئة في محرر رمز الفئة ثم اختر 'الذهاب إلى التنفيذ "من قائمة السياق: مع السيطرة + F12 يجري الاختصار

وانظر <لأ href = "https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages / "يختلط =" noreferrer "> https://blogs.msdn.microsoft.com/dotnet/2015/11/30/whats-new-in-visual-studio-update-1-for-net-managed-languages/ للحصول على مزيد من التفاصيل.

لا أحد قد ذكر هذا بعد ، لذلك سأضيف ذلك.
Jetbrains dotPeek هو حر .صافي decompiler لديه القدرة على عرض هذه المعلومات بسهولة.

تحميل مجاني: http://www.jetbrains.com/decompiler/

Jetbrains هي الشركة التي تصنع Resharper.

الخطوات للعثور على الفئات المشتقة:

  1. بدء dotPeek
  2. حدد 'فتح من GAC...' وإضافة النظام.ويب.MVC الجمعية
  3. حدد 'التنقل / انتقل إلى النوع' و اكتب في ActionResult
  4. على ActionResult تعريف فئة, انقر بزر الماوس الأيمن فوق وحدد 'المستمدة من رموز'
  5. فويلا!كل فئة مشتقة يظهر (حتى عدد قليل لم أكن أعرف عن!)

وبفرض أن لديك Resharper مثبتة: مع المؤشر على الدرجة / واجهة، انقر على الحق - فحص - التسلسلات الهرمية

وهذا يدل على الفئات الفرعية، تطبيقات، وsuperclasses.

ويمكنك أيضا استخدام العاكس .

وتحميل كل من المجالس تريد أن تبدو في، انتقل إلى نوع، وتوسيع هذا البند أنواع المشتقة.

ويمكنك أيضا القيام بذلك في مستعرض الكائنات، ولكن لسبب VS2008 تستطيع ان تفعل ذلك إلا في واحدة من وجهات النظر صافي الإطار. (VS2010 بيتا 2 تستطيع ان تفعل ذلك في أي عرض)

وفي Visual Studio عرض فئة انتقل إلى الطبقة كنت مهتما وتجد قاعدتها والفئات المشتقة

لفئات الإطار، وأنا استخدم مكتبة MSDN. يذهب قسم الميراث التسلسل الهرمي في كلا الاتجاهين. المسلم لا تساعد كثيرا لبعض المكتبات طرف 3D، وبالرغم من ذلك.

وبمساعدة ReSharper (الإصدار 2016/01/02) فقط السيطرة + البديل + انقر فوق في الفئة الأساسية. سترى شيئا من هذا القبيل:

والطبقة السحب أو مساحة من على كائن مستكشف لعلى الفئة حرفين متتاليين ملف.

كيفية الحصول على لطيفة فئة الرسم لالمدمج في صفوف دوت؟

وتحديد نوع وانقر بزر الماوس الأيمن نرى شيئا --- عرض على الخريطة كود --option تحديده توليد formet صورة لأولئك الذين يرثون هذا النوع كصورة جميلة جدا كما شكل ملف .dgml أنه يعطي أكثر من ذلك بكثير من المعلومات حول نوع

ومجرد رمز ذلك.

Assembly asm = Assembly.LoadFrom(PATH_TO_PROJECT_OUTPUT);

var types = from t in asm.GetTypes()
            where t.BaseType != null && t.BaseType.ToString() == "System.Web.UI.Page"
            // if you want to add reference - where typeof (System.Web.UI.Page).Equals(t.BaseType) 
            select t;

foreach (var type in types)
{
    Console.WriteLine(type);
}

وإذا قمت بالترقية إلى VS2012 يمكنك استخدام "كود الخريطة".
انقر على الحق في نوع كنت ترغب في عرض التسلسل الهرمي الميراث واختيار "إضافة إلى خريطة كود". ثم في عرض الخريطة كود يمكنك توسيع العقد وانقر على الحق في اختيار "إظهار المستمدة الطبقات / قاعدة". لسوء الحظ أنها لا تعمل لفئات. NET المقدمة.

Visual Studio 2012 (دون ReSharper)

  1. في "مستكشف الحلول" انقر بزر الماوس الأيمن على الطبقة (الذي الفئات المشتقة كنت تريد أن ترى).
  2. في فئة الرسم البياني ، انقر بزر الماوس الأيمن على الطبقة واختيار إظهار الفئات المشتقة'.

وكخيار لأولئك باستخدام Visual مساعدة، يمكنك أيضا الضغط على Shift + ALT + G (في حين أن الإقحام على اسم الفئة) لإظهار قائمة السياق "غوتو ذات"، وإذا كان هناك تستمد الطبقات شئت الحصول على قائمة فرعية لأن يسرد كل منهم، وحتى يظهر الهياكل الميراث بين تلك الفئات المشتقة منها.

وهناك طريقة بسيطة جدا للقيام بذلك، هو البحث عن : Classname في "بحث واستبدال النافذة" (CTRL + F) واستخدام "البحث عن خيارات / مباراة الكلمة بالكامل" الخيار. سوف تجد فقط الطبقات الموروثة.

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