Jcd.Reflection
2.0.26
Prefix Reserved
dotnet add package Jcd.Reflection --version 2.0.26
NuGet\Install-Package Jcd.Reflection -Version 2.0.26
<PackageReference Include="Jcd.Reflection" Version="2.0.26" />
paket add Jcd.Reflection --version 2.0.26
#r "nuget: Jcd.Reflection, 2.0.26"
// Install Jcd.Reflection as a Cake Addin #addin nuget:?package=Jcd.Reflection&version=2.0.26 // Install Jcd.Reflection as a Cake Tool #tool nuget:?package=Jcd.Reflection&version=2.0.26
Jcd.Reflection
A dotnetstandard2.0 library containing some commonly implemented reflection helpers.
v2.0 has many breaking changes. See the Version History for details.
Examples
internal static class Program
{
private static void Main()
{
var c = new TestClass();
// set the private field, _field
c.SetValue("_field",10);
// now get its value.
var val = (int)c.GetValue("_field");
Console.WriteLine(val);
// Now set a private property with a backing field.
c.SetValue("PrivateProperty",20);
// Now call a private helper method that returns the value from the backing field.
val = c.Invoke<int>("InternalGetField");
Console.WriteLine(val);
Special Thanks To
- Kristian Hellang on GitHub for the Scrutor project.
Scrutor inspired the technique I'm using for finding implementations of specific types as well as a couple of other handy utility methods.
Badges
Version History
v2.0 Breaking Changes
Version 2.0 comes with a significant number of breaking changes for advanced use cases. These are listed below
ExpandoObjectExtensions
was removed. It wasn't functioning as planned. An overhaul of the approach is needed.- All overloads of
FilterMethods
were renamed toGetMethods
- The filter parameter was moved to the last parameter on an overload of
GetMethods
(formerlyFilterMethods
). - Renamed
EnumerationSettings
toFilter
inMemberInfoEnumerator
,FieldOrPropertyEnumerator
, andMethodInfoEnumerator
- Moved and renamed type from
MethodInfoEnumerator.Settings
toMethodInfoFilter
. - Moved predefined instances of
MethodInfoEnumerator.Settings
fromMethodInfoEnumerator
toMethodInfoFilter
. - Moved and renamed type from
MemberInfoEnumerator.Settings
toMemberInfoFilter
. - Moved and renamed type from
FieldOrPropertyEnumerator.Settings
toFieldOrPropertyInfoFilter
. MethodInfoFilter
,MemberInfoFilter
,FieldOrPropertyInfoFilter
fields are now get-only properties, requiring a call tonew
to create new instances.- To facilitate the use of init properties on
MethodInfoFilter
,MemberInfoFilter
,FieldOrPropertyInfoFilter
types, a customIsExternalInit
is required of target frameworks not supporting it. See this project's source code for an example (IsExternalInit.cs
). - Extension methods
GetCusomAttributes
andHasAttribute
were moved into classes named after the underlying method. This will only break non-extension invocations.
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 was computed. 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. |
.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
- Jcd.Validations (>= 1.2.0)
- Microsoft.CSharp (>= 4.7.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Jcd.Reflection:
Package | Downloads |
---|---|
Jcd.Formatting
A library to simplify implementing IFormatProvider and ICustomFormatter as well as arbitrary integer encoding (e.g. Base 36) |
|
Jcd.Units
Provides types and extensions methods for unit of measure based, quantity comparisons, conversions, and arithmetic, as well as an extensive unit of measure catalog. |
GitHub repositories
This package is not used by any popular GitHub repositories.