An interactive CLI tool for deep exploration of .NET assemblies and NuGet packages using reflection. Perfect for when you need to go deeper than surface-level API documentation and really understand the internals of any .NET library.
While tools like PackageAnalyzer give you a great overview of package contents, Reflection Explorer is designed for deep, interactive exploration. It's your workspace for understanding how libraries work by letting you:
- Search interactively - Type partial names like "sign" or "auth" to find all matching types
- Explore at runtime - See actual loaded assemblies and their types
- Accumulate knowledge - Add multiple packages to compare and learn from
- Navigate relationships - See what interfaces a class implements, base types, and more
- Real-time exploration without writing code
- Navigate namespaces, types, and members interactively
- Search functionality to find types by partial name
- Detailed analysis of any type including constructors, properties, methods, and enums
- Add any NuGet package to explore
- Accumulate packages over time for comparison
- See how different SDKs structure their APIs
- Learn from well-designed libraries
- Constructors with parameter details
- Properties with get/set accessibility
- Methods with return types and parameters
- Enum values with numeric values
- Interface implementations
- Static vs instance members
- Async method detection
git clone https://github.com/sojohnnysaid/ReflectionExplorer.git
cd ReflectionExplorer
dotnet build
# Run the interactive explorer
dotnet run
# Run in demo mode (non-interactive)
dotnet run demo
The real power comes from adding NuGet packages to explore:
# Add any NuGet package
dotnet add package Newtonsoft.Json
dotnet add package Serilog
dotnet add package Microsoft.EntityFrameworkCore
# Run the explorer
dotnet run
- List namespaces - See all namespaces in loaded assemblies
- Explore specific namespace - Browse all types in a namespace
- Search for types - Find types by partial name match
- Analyze specific type - Deep dive into a type's members
- Show all types - Complete type listing organized by namespace
- List loaded assemblies - See what's currently loaded
# Add the SDK package
dotnet add package Conga.Sign.SDK --version 202508.1.3
# Run the explorer
dotnet run
# In the menu:
# - Choose option 4 to search
# - Type "sign" to find all Sign-related types
# - Select a type like "CongaSignConfig" to analyze
# - See all its properties, methods, and constructors
# Add multiple auth libraries
dotnet add package Auth0.AuthenticationApi
dotnet add package Microsoft.Identity.Client
dotnet add package IdentityModel
# Run and search for "auth" to compare their approaches
dotnet run
The tool uses color coding and icons for clarity:
- 📘 Regular Class
- 🔒 Static Class
- 🎨 Abstract Class
- 🔌 Interface
- 📝 Enum
- 📦 Struct
- Yellow - Constructors and section headers
- Green - Properties
- Cyan - Methods and namespaces
- Magenta - Enum values
Use PackageAnalyzer when you want to: | Use Reflection Explorer when you want to: |
---|---|
Get a quick overview of a package | Interactively explore types |
See all types at once | Search for specific functionality |
Generate a report of package contents | Understand relationships between types |
Analyze packages you don't have locally | Work with packages in your development environment |
One-time package inspection | Build a collection of packages to reference |
# Create a dedicated exploration project
mkdir MySDKExplorer
cd MySDKExplorer
dotnet new console
cp /path/to/ReflectionExplorer/Program.cs .
# Add all the SDKs you work with
dotnet add package Azure.Storage.Blobs
dotnet add package AWS.SDK.S3
dotnet add package Google.Cloud.Storage.V1
# Now you have a searchable knowledge base
dotnet run
- Use partial names: "config" finds all configuration classes
- Search for patterns: "client" finds all client classes
- Look for interfaces: "I" prefix often indicates interfaces
- Find enums: search for "type" or "status" or "mode"
Contributions are welcome! Some ideas for enhancements:
- Export findings to markdown/JSON
- Compare two versions of the same package
- Generate code snippets from discoveries
- Add regex search support
- Filter by access modifiers
MIT License - see LICENSE file for details
- Companion tool to PackageAnalyzer
- Built with .NET Reflection API
- Inspired by the need to understand third-party SDKs deeply
- Some internal types may not be visible due to access modifiers
- Very large assemblies might take a moment to load
- Generic type constraints are not fully displayed
Found a bug or have a feature request? Please open an issue on GitHub!
Remember: This tool is for learning and exploration. Once you understand an SDK, you can remove it from your ReflectionExplorer project or keep it for future reference. Think of it as your personal SDK laboratory! 🧪