Shiny.Reflector 1.6.0-beta-0003

Prefix Reserved
This is a prerelease version of Shiny.Reflector.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Shiny.Reflector --version 1.6.0-beta-0003
                    
NuGet\Install-Package Shiny.Reflector -Version 1.6.0-beta-0003
                    
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.6.0-beta-0003" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Shiny.Reflector" Version="1.6.0-beta-0003" />
                    
Directory.Packages.props
<PackageReference Include="Shiny.Reflector" />
                    
Project file
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.6.0-beta-0003
                    
#r "nuget: Shiny.Reflector, 1.6.0-beta-0003"
                    
#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.6.0-beta-0003
                    
#: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.6.0-beta-0003&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Shiny.Reflector&version=1.6.0-beta-0003&prerelease
                    
Install as a Cake Tool

Shiny Reflector

Reflection without the actual... reflection. AOT compliant!

Usage

Using the following attribute and marking your class as partial

[Shiny.Reflector.ReflectorAttribute]
public partial class MyClass
{
    public int MyProperty { get; set; }
    public string Message { get; set;}
}

Works on records as well, but you must use the partial keyword and attribute just like a class.

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"]);
Product 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 160 7/7/2025
1.6.0 131 7/3/2025
1.6.0-beta-0015 166 8/7/2025
1.6.0-beta-0014 128 7/15/2025
1.6.0-beta-0013 127 7/15/2025
1.6.0-beta-0012 132 7/15/2025
1.6.0-beta-0011 125 7/7/2025
1.6.0-beta-0010 132 7/3/2025
1.6.0-beta-0009 130 7/3/2025
1.6.0-beta-0006 123 7/1/2025
1.6.0-beta-0005 128 7/1/2025
1.6.0-beta-0004 127 7/1/2025
1.6.0-beta-0003 131 6/30/2025
1.5.1 475 6/30/2025
1.5.0 129 6/30/2025
1.4.0 136 6/30/2025
1.4.0-beta-0002 132 6/30/2025
1.4.0-beta-0001 128 6/30/2025
1.4.0-alpha-0002 123 6/29/2025
1.3.0 131 6/29/2025
1.2.0 129 6/29/2025
1.1.0 135 6/29/2025
1.1.0-alpha-0004 131 6/29/2025
1.1.0-alpha-0001 131 6/29/2025
1.0.0 135 6/29/2025
1.0.0-g0d103c2df8 89 6/28/2025
1.0.0-alpha-0013 133 6/29/2025
1.0.0-alpha-0012 88 6/28/2025
1.0.0-alpha-0007 67 6/27/2025
1.0.0-alpha-0006 69 6/27/2025
1.0.0-alpha-0005 73 6/27/2025
1.0.0-alpha-0004 123 6/27/2025