Whidbey “Go To Definition” Feature


So I am digging through some MDX code tonight and I see a class I hadn’t heard of before. I am thinking that it is a helper class that the SDK Sample framework has created, so I right click on the class name and select “Go To Definition“.  Sure enough I am taken to a source file that has all of the methods of the class along with Xml comments, etc. The odd thing is that the class looks like a “header” file. No method bodies. I take a look at the tab up top and next to the class name is a “[from metadata]” tag. Neat! So instead of dumping me into the Object Browser for externally defined classes, it actually generated a class definition on the fly. On my home machine I currently only have the C# Express version installed, so I’m not sure if this is a C# feature or a more general VS 2005 feature.


Here is what you get if you “Go To Definition“ for System.Object:


namespace System


{


    /// <summary>Supports all classes in the .NET Framework class hierarchy and provides low-level services to derived classes. This is the ultimate base class of all classes in the .NET Framework; it is the root of the type hierarchy.</summary>


    /// <filterpriority>1</filterpriority>


    [System.Runtime.InteropServices.ClassInterfaceAttribute(2)]


    public class Object


    {


        /// <summary>Determines whether the specified <see cref=“T:System.Object” /> instances are considered equal.</summary>


        /// <returns>true if objA is the same instance as objB or if both are null references or if objA.Equals(objB) returns true; otherwise, false.</returns>


        /// <param name=“objB”>The second <see cref=“T:System.Object” /> to compare. </param>


        /// <param name=“objA”>The first <see cref=“T:System.Object” /> to compare. </param>


        /// <filterpriority>2</filterpriority>


        public static bool Equals(object objA, object objB);


        /// <summary>Determines whether the specified <see cref=“T:System.Object” /> is equal to the current <see cref=“T:System.Object” />.</summary>


        /// <returns>true if the specified <see cref=“T:System.Object” /> is equal to the current <see cref=“T:System.Object” />; otherwise, false.</returns>


        /// <param name=“obj”>The <see cref=“T:System.Object” /> to compare with the current <see cref=“T:System.Object” />. </param>


        /// <filterpriority>2</filterpriority>


        public virtual bool Equals(object obj);


        /// <summary>Serves as a hash function for a particular type. <see cref=“M:System.Object.GetHashCode” /> is suitable for use in hashing algorithms and data structures like a hash table.</summary>


        /// <returns>A hash code for the current <see cref=“T:System.Object” />.</returns>


        /// <filterpriority>2</filterpriority>


        public virtual int GetHashCode();


        /// <summary>Gets the <see cref=“T:System.Type” /> of the current instance.</summary>


        /// <returns>The <see cref=“T:System.Type” /> instance that represents the exact runtime type of the current instance.</returns>


        /// <filterpriority>2</filterpriority>


        public System.Type GetType();


        /// <summary>Creates a shallow copy of the current <see cref=“T:System.Object” />.</summary>


        /// <returns>A shallow copy of the current <see cref=“T:System.Object” />.</returns>


        protected object MemberwiseClone();


        /// <summary>Initializes a new instance of the <see cref=“T:System.Object” /> class.</summary>


        public Object();


        /// <summary>Determines whether the specified <see cref=“T:System.Object” /> instances are the same instance.</summary>


        /// <returns>true if objA is the same instance as objB or if both are null references; otherwise, false.</returns>


        /// <param name=“objB”>The second <see cref=“T:System.Object” /> to compare. </param>


        /// <param name=“objA”>The first <see cref=“T:System.Object” /> to compare. </param>


        /// <filterpriority>2</filterpriority>


        public static bool ReferenceEquals(object objA, object objB);


        /// <summary>Returns a <see cref=“T:System.String” /> that represents the current <see cref=“T:System.Object” />.</summary>


        /// <returns>A <see cref=“T:System.String” /> that represents the current <see cref=“T:System.Object” />.</returns>


        /// <filterpriority>2</filterpriority>


        public virtual string ToString();


        /// <summary>Allows an <see cref=“T:System.Object” /> to attempt to free resources and perform other cleanup operations before the <see cref=“T:System.Object” /> is reclaimed by garbage collection.</summary>


        [System.Runtime.ConstrainedExecution.ReliabilityContractAttribute(3, 2)]


        ~Object();


    }


}



 


Comments (3)

  1. Very nifty. I wonder what the <filterpriority /> tag is… I don’t think that’s part of the standard xml documentation in VS.NET 2003. Do you (or anyone else) know?

  2. Mitch: This feature is currently C# only. 🙂

  3. Note : this entry has moved . I am a big fan of using XML comments in code and actually have a few Visual

Skip to main content