NatsunekoLaboratory.Refractions
1.0.0
dotnet add package NatsunekoLaboratory.Refractions --version 1.0.0
NuGet\Install-Package NatsunekoLaboratory.Refractions -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NatsunekoLaboratory.Refractions" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NatsunekoLaboratory.Refractions --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: NatsunekoLaboratory.Refractions, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NatsunekoLaboratory.Refractions as a Cake Addin
#addin nuget:?package=NatsunekoLaboratory.Refractions&version=1.0.0
// Install NatsunekoLaboratory.Refractions as a Cake Tool
#tool nuget:?package=NatsunekoLaboratory.Refractions&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Refractions
The .NET reflection library for .NET Standard 2.0 (for Unity backward compatibles).
Examples
// 1st: create refraction instance
var refraction = Refractions.FromType<TestClass>();
// 2nd: create mock interface
public interface ITestClass
{
// if method has `static` and `public` access modifiers
[Public]
[Static]
void StaticWithReturnsVoid();
// if method has `static` and non-`public` access modifiers
[NonPublic]
[Static]
string StaticWithReturnsString();
[NonPublic]
[Static]
string StaticWithArgsAndReturnsString(string msg);
// if method has `public` access modifiers and instance method
[Public]
[Instance]
void InstanceWithReturnsVoid();
// if method has non-`public` access modifiers and instance method
[NonPublic]
[Instance]
string InstanceWithReturnsString();
[Public]
[Instance]
string InstanceWithArgsAndReturnsString(string msg);
// return self instance
[Public]
[Instance]
ITestClass Test();
// interface could not declare field, set FieldAttribute
[Public]
[Instance]
[Field]
string field { get; set; }
[Public]
[Instance]
string Property { get; set; }
}
// 3rd: create instance with target class
var t = refraction.GetLaxity<ITestClass>("TestClass");
var t = refraction.Get<ITestClass>("Namespace.TestClass");
var c = new TestClass();
// 4th: set member instance if needed
var accessible = t.Instance(c);
// 5th: invoke methods
accessible.ProxyInvoke(w => w.StaticWithReturnsVoid());
accessible.ProxyInvoke(w => w.StaticWithReturnsString()).Dump();
accessible.ProxyInvoke(w => w.StaticWithArgsAndReturnsString(arg)).Dump();
accessible.ProxyInvoke(w => w.StaticWithArgsAndReturnsString("inline")).Dump();
accessible.ProxyInvoke(w => w.InstanceWithReturnsVoid());
accessible.ProxyInvoke(w => w.InstanceWithReturnsString()).Dump();
accessible.ProxyInvoke(w => w.InstanceWithArgsAndReturnsString(arg)).Dump();
accessible.ProxyInvoke(w => w.InstanceWithArgsAndReturnsString("inline")).Dump();
// 6th: property / field access
accessible.ProxySet(w => w.Field, "SetValue");
accessible.ProxyGet(w => w.Field).Dump();
accessible.ProxySet(w => w.Property, "Minecraft");
accessible.ProxyGet(w => w.Property).Dump();
License
MIT by @6jz
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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 164 | 3/25/2023 |