Shiny.Reflector
1.0.0
Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Shiny.Reflector --version 1.0.0
NuGet\Install-Package Shiny.Reflector -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="Shiny.Reflector" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Shiny.Reflector" Version="1.0.0" />
<PackageReference Include="Shiny.Reflector" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Shiny.Reflector --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Shiny.Reflector, 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.
#:package Shiny.Reflector@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Shiny.Reflector&version=1.0.0
#tool nuget:?package=Shiny.Reflector&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Shiny Reflector
Reflection without the actual... reflection. AOT compliant!
Usage
[Shiny.Reflector.ReflectorAttribute]
public class MyClass
{
public int MyProperty { get; set; }
public string Message { get; set;}
}
Just that attribute allows you to do this:
var myClass = new MySampleClass
{
Name = "Hello World",
Age = null
};
// NOTE: the use of GetReflector - a reflector class is generated for each class marked with the ReflectorAttribute
var reflector = myClass.GetReflector();
foreach (var prop in reflector.Properties)
{
var objValue = reflector[prop.Name];
Console.WriteLine($"Property: {prop.Name} ({prop.Type}) - Current Value: {objValue}");
}
// generics for type casting
var name = reflector.GetValue<string>("Name");
Console.WriteLine("Reflector Name: " + name);
// indexers for loose typing
Console.WriteLine("Reflector Value: " + reflector["age"]);
// set with generics
reflector.SetValue("Age", 99);
// or just an object on the indexer
reflector["name"] = "Something Else";
Console.WriteLine("Reflector Name Value: " + reflector["NaMe"]);
Console.WriteLine("Reflector Age Value: " + reflector["NaMe"]);
Put ReflectionExtensions (the thing that let's you get the reflector) in a separate assembly
<PropertyGroup>
<ShinyReflectorNamespace>MyNamespace</ShinyReflectorNamespace>
OR
<RootNamespace>MyNamespace</RootNamespace>
OTHERWISE
global namespace (no namespace)
</PropertyGroup>
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Shiny.Reflector:
Package | Downloads |
---|---|
Shiny.Extensions.Stores
Store anything in a key/value store - Abstractions for iOS, Android and Windows preferences/secure storage |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.6.1 | 131 | 7/7/2025 |
1.6.0 | 125 | 7/3/2025 |
1.6.0-beta-0014 | 33 | 7/15/2025 |
1.6.0-beta-0013 | 33 | 7/15/2025 |
1.6.0-beta-0012 | 49 | 7/15/2025 |
1.6.0-beta-0011 | 118 | 7/7/2025 |
1.6.0-beta-0010 | 126 | 7/3/2025 |
1.6.0-beta-0009 | 122 | 7/3/2025 |
1.6.0-beta-0006 | 117 | 7/1/2025 |
1.6.0-beta-0005 | 120 | 7/1/2025 |
1.6.0-beta-0004 | 120 | 7/1/2025 |
1.6.0-beta-0003 | 125 | 6/30/2025 |
1.5.1 | 376 | 6/30/2025 |
1.5.0 | 123 | 6/30/2025 |
1.4.0 | 128 | 6/30/2025 |
1.4.0-beta-0002 | 126 | 6/30/2025 |
1.4.0-beta-0001 | 119 | 6/30/2025 |
1.4.0-alpha-0002 | 114 | 6/29/2025 |
1.3.0 | 122 | 6/29/2025 |
1.2.0 | 120 | 6/29/2025 |
1.1.0 | 126 | 6/29/2025 |
1.1.0-alpha-0004 | 123 | 6/29/2025 |
1.1.0-alpha-0001 | 123 | 6/29/2025 |
1.0.0 | 127 | 6/29/2025 |
1.0.0-g0d103c2df8 | 82 | 6/28/2025 |
1.0.0-alpha-0013 | 125 | 6/29/2025 |
1.0.0-alpha-0012 | 82 | 6/28/2025 |
1.0.0-alpha-0007 | 62 | 6/27/2025 |
1.0.0-alpha-0006 | 65 | 6/27/2025 |
1.0.0-alpha-0005 | 68 | 6/27/2025 |
1.0.0-alpha-0004 | 118 | 6/27/2025 |