# Documentation Attribute IDE Tooltip Example ## Before (Without XML Doc Generator) When using the `DocumentationAttribute` without the XML Doc Generator, IDEs would not show the documentation: ```csharp [Documentation( "BenchmarkUtility", "Utility class for benchmarking code execution time.", null, @"```csharp BenchmarkUtility.Start(""MyBenchmark""); // Code to benchmark BenchmarkUtility.Stop(""MyBenchmark""); var results = BenchmarkUtility.GetResults(""MyBenchmark""); ```")] public class BenchmarkUtility { // ... } ``` **IDE Hover Tooltip Shows:** No documentation (just the class signature) --- ## After (With XML Doc Generator) With the XML Doc Generator running as part of the build, the same code automatically generates XML documentation that appears in IDE tooltips: ### Generated XML Documentation: ```xml Utility class for benchmarking code execution time. ``` **IDE Hover Tooltip Now Shows:** - **Summary:** "Utility class for benchmarking code execution time." - **Example:** Full code example with syntax highlighting --- ## Real-World Example: Method with Parameters ```csharp [Documentation( "AverageWithNullValidation", "Calculates the average of a list of integers, returning 0 if the list is empty.", new string[] { "list: The list of integers to calculate the average from." }, @"```csharp var numbers = new List { 1, 2, 3, 4 }; int average = numbers.AverageWithNullValidation(); // average will be 2 var emptyList = new List(); int averageEmpty = emptyList.AverageWithNullValidation(); // averageEmpty will be 0 ```")] public static int AverageWithNullValidation(this IEnumerable list) { return list.Any() ? (int)list.Average() : 0; } ``` ### Generated XML: ```xml Calculates the average of a list of integers, returning 0 if the list is empty. Parameters: - list: The list of integers to calculate the average from. { 1, 2, 3, 4 }; int average = numbers.AverageWithNullValidation(); // average will be 2 var emptyList = new List(); int averageEmpty = emptyList.AverageWithNullValidation(); // averageEmpty will be 0 ```]]> ``` **IDE Hover Tooltip Now Shows:** - **Summary:** "Calculates the average of a list of integers, returning 0 if the list is empty." - **Remarks:** Parameter documentation - **Example:** Complete usage example with expected behavior --- ## Benefits 1. **Rich Documentation in IDE:** See full descriptions, parameters, and examples without leaving your code 2. **Automatic Generation:** No manual XML comment writing - it's all generated from the attribute 3. **DRY Principle:** Define documentation once in the attribute, use it for both runtime and design-time 4. **Better IntelliSense:** Enhanced code completion with examples and detailed descriptions 5. **Consistent Format:** All documentation follows .NET XML documentation standards --- ## How to View in Your IDE ### Visual Studio - **Hover** over any class/method/property with DocumentationAttribute - **Quick Info** (Ctrl+K, Ctrl+I) for detailed view ### JetBrains Rider - **Hover** over the symbol - **Quick Documentation** (Ctrl+Q or F1) for full documentation panel ### VS Code (with C# extension) - **Hover** over the symbol for IntelliSense popup - Shows summary and examples inline