System.Reflection.Context 9.0.0-rc.2.24473.5
About
Provides the CustomReflectionContext class to enable adding or removing custom attributes from reflection objects, or adding dummy properties to those objects, without re-implementing the complete reflection model.
Key Features
- Create a custom reflection context to control how types and members are presented during reflection.
- Easily extend or customize the reflection model to fit specialized application needs.
How to Use
Defining a custom Attribute and implement a CustomReflectionContext to add the attribute to specic methods.
using System.Reflection;
using System.Reflection.Context;
[AttributeUsage(AttributeTargets.Method)]
class CustomAttribute : Attribute
{
}
class CustomContext : CustomReflectionContext
{
// Called whenever the reflection context checks for custom attributes.
protected override IEnumerable<object> GetCustomAttributes(MemberInfo member, IEnumerable<object> declaredAttributes)
{
// Add custom attribute to "ToString" members
if (member.Name == "ToString")
{
yield return new CustomAttribute();
}
// Keep existing attributes as well
foreach (var attr in declaredAttributes)
{
yield return attr;
}
}
}
Inspecting the string type with both the default and custom reflection context.
Type type = typeof(string);
// Representation of the type in the default reflection context
TypeInfo typeInfo = type.GetTypeInfo();
Console.WriteLine("\"To*\" members and their attributes in the default reflection context");
foreach (MemberInfo memberInfo in typeInfo.DeclaredMembers)
{
if (memberInfo.Name.StartsWith("To"))
{
Console.WriteLine(memberInfo.Name);
foreach (Attribute attribute in memberInfo.GetCustomAttributes())
{
Console.WriteLine($" - {attribute.GetType()}");
}
}
}
Console.WriteLine();
// Output:
// "To*" members and their attributes in the default reflection context
// ToCharArray
// ToCharArray
// ToString
// ToString
// ToLower
// ToLower
// ToLowerInvariant
// ToUpper
// ToUpper
// ToUpperInvariant
// Representation of the type in the customized reflection context
CustomContext customContext = new();
TypeInfo customTypeInfo = customContext.MapType(typeInfo);
Console.WriteLine("\"To*\" members and their attributes in the customized reflection context");
foreach (MemberInfo memberInfo in customTypeInfo.DeclaredMembers)
{
if (memberInfo.Name.StartsWith("To"))
{
Console.WriteLine(memberInfo.Name);
foreach (Attribute attribute in memberInfo.GetCustomAttributes())
{
Console.WriteLine($" - {attribute.GetType()}");
}
}
}
// Output:
// "To*" members and their attributes in the customized reflection context
// ToCharArray
// ToCharArray
// ToString
// - CustomAttribute
// ToString
// - CustomAttribute
// ToLower
// ToLower
// ToLowerInvariant
// ToUpper
// ToUpper
// ToUpperInvariant
Main Types
The main type provided by this library is:
System.Reflection.Context.CustomReflectionContext
Additional Documentation
Feedback & Contributing
System.Reflection.Context is released as open source under the MIT license. Bug reports and contributions are welcome at the GitHub repository.
Showing the top 20 packages that depend on System.Reflection.Context.
| Packages | Downloads |
|---|---|
|
Microsoft.Windows.Compatibility
This Windows Compatibility Pack provides access to APIs that were previously available only for .NET Framework. It can be used from both .NET as well as .NET Standard.
|
9 |
|
Microsoft.Windows.Compatibility
This Windows Compatibility Pack provides access to APIs that were previously available only for .NET Framework. It can be used from both .NET as well as .NET Standard.
|
8 |
|
System.ComponentModel.Composition.Registration
This namespace provides classes that constitute the core of the Managed Extensibility Framework, or MEF.
Commonly Used Types:
System.ComponentModel.Composition.Registration.RegistrationBuilder
System.ComponentModel.Composition.Registration.PartBuilder
System.ComponentModel.Composition.Registration.PartBuilder<T>
System.ComponentModel.Composition.Registration.ParameterImportBuilder
System.ComponentModel.Composition.Registration.ImportBuilder
System.ComponentModel.Composition.Registration.ExportBuilder
|
6 |
|
System.ComponentModel.Composition.Registration
This namespace provides classes that constitute the core of the Managed Extensibility Framework, or MEF.
Commonly Used Types:
System.ComponentModel.Composition.Registration.RegistrationBuilder
System.ComponentModel.Composition.Registration.PartBuilder
System.ComponentModel.Composition.Registration.PartBuilder<T>
System.ComponentModel.Composition.Registration.ParameterImportBuilder
System.ComponentModel.Composition.Registration.ImportBuilder
System.ComponentModel.Composition.Registration.ExportBuilder
|
5 |
https://go.microsoft.com/fwlink/?LinkID=799421
.NET 8.0
- No dependencies.
.NET 9.0
- No dependencies.
.NET Standard 2.0
- No dependencies.
.NET Standard 2.1
- No dependencies.
| Version | Downloads | Last updated |
|---|---|---|
| 9.0.2 | 5 | 07/12/2025 |
| 9.0.0-rc.2.24473.5 | 6 | 07/11/2025 |
| 9.0.0-preview.5.24306.7 | 6 | 07/11/2025 |
| 9.0.0-preview.3.24172.9 | 7 | 08/09/2025 |
| 8.0.0-preview.3.23174.8 | 8 | 08/09/2025 |
| 8.0.0-preview.2.23128.3 | 7 | 08/09/2025 |
| 7.0.0-preview.5.22301.12 | 5 | 07/13/2025 |
| 7.0.0-preview.1.22076.8 | 5 | 07/09/2025 |
| 6.0.0-preview.7.21377.19 | 7 | 07/11/2025 |
| 6.0.0-preview.3.21201.4 | 6 | 07/12/2025 |
| 5.0.0 | 5 | 07/13/2025 |