Shiny.Reflector 1.0.0

Prefix Reserved
There is a newer version of this package available.
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" />
                    
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.0.0
                    
#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
                    
Install as a Cake Addin
#tool nuget:?package=Shiny.Reflector&version=1.0.0
                    
Install as a Cake Tool

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 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