Dev.Util.Reflection
1.3.0
dotnet add package Dev.Util.Reflection --version 1.3.0
NuGet\Install-Package Dev.Util.Reflection -Version 1.3.0
<PackageReference Include="Dev.Util.Reflection" Version="1.3.0" />
<PackageVersion Include="Dev.Util.Reflection" Version="1.3.0" />
<PackageReference Include="Dev.Util.Reflection" />
paket add Dev.Util.Reflection --version 1.3.0
#r "nuget: Dev.Util.Reflection, 1.3.0"
#:package Dev.Util.Reflection@1.3.0
#addin nuget:?package=Dev.Util.Reflection&version=1.3.0
#tool nuget:?package=Dev.Util.Reflection&version=1.3.0
Dev.Util.Reflection
High-performance runtime type inspection and property orchestration for the Dev.Util ecosystem. Move beyond boilerplate Reflection code.
📦 Installation
dotnet add package Dev.Util.Reflection
✨ Features
- 🔍 Property Discovery: Safely check for and interact with properties by string name.
- 📡 Assembly Scanning: Find all types implementing a specific interface or attribute.
- 🏷️ Attribute Access: Fluent methods to retrieve custom attributes from types and properties.
- ⚡ Performance: Optimized metadata caching (where applicable) for faster runtime access.
- 🧬 Generic Helpers: Identify generic types and arguments effortlessly.
🛠 Usage Examples
1. Dynamic Property Management
Read or write values to objects without knowing their type at compile time.
using Dev.Util.Reflection;
var data = new User { Name = "Alice", Secret = "123" };
// Safe check
if (data.HasProperty("Name"))
{
// Get value as object
var name = data.GetPropertyValue("Name");
// Set value
data.SetPropertyValue("Name", "Bob");
}
2. Scanning Assemblies for Services
Perfect for implementing custom dependency injection or plugin systems.
using Dev.Util.Reflection;
// Scan the current assembly for all implementations of IService
var types = ReflectionExtensions.GetTypesImplementing<IService>();
foreach (var t in types)
{
var instance = Activator.CreateInstance(t);
// ...
}
3. Reading Column/Display Attributes
Extract metadata from your data models.
using Dev.Util.Reflection;
public class MyModel {
[Description("Primary Key")]
public int ID { get; set; }
}
// Get attribute fluently
var descAttr = typeof(MyModel).GetProperty("ID").GetCustomAttribute<DescriptionAttribute>();
string text = descAttr?.Description; // "Primary Key"
4. Generic Type Inspection
var list = new List<string>();
if (list.GetType().IsGenericList()) {
var itemType = list.GetType().GetGenericArguments()[0]; // typeof(string)
}
While optimized, Reflection still has overhead. Use it sparingly in high-frequency hot paths, or cache the results.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Dev.Util.Core (>= 1.3.0)
-
net8.0
- Dev.Util.Core (>= 1.3.0)
-
net9.0
- Dev.Util.Core (>= 1.3.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Dev.Util.Reflection:
| Package | Downloads |
|---|---|
|
Dev.Util
The complete Dev.Util ecosystem for .NET. One package to rule them all. Provides access to Core, Collections, IO, Security, Web, Reflection, Tasks, and Json modules. |
GitHub repositories
This package is not used by any popular GitHub repositories.