Shiny.Reflector 1.1.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.1.0
                    
NuGet\Install-Package Shiny.Reflector -Version 1.1.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.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Shiny.Reflector" Version="1.1.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.1.0
                    
#r "nuget: Shiny.Reflector, 1.1.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.1.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.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Shiny.Reflector&version=1.1.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>

TODO

  • Ensure GetReflector calls don't get mixed up since they can be generated in different assemblies
    • Could add it directly to a partial class, the problem is that will interfere with libraries like CTMVVM
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 151 7/7/2025
1.6.0 130 7/3/2025
1.6.0-beta-0014 125 7/15/2025
1.6.0-beta-0013 125 7/15/2025
1.6.0-beta-0012 130 7/15/2025
1.6.0-beta-0011 123 7/7/2025
1.6.0-beta-0010 131 7/3/2025
1.6.0-beta-0009 127 7/3/2025
1.6.0-beta-0006 121 7/1/2025
1.6.0-beta-0005 124 7/1/2025
1.6.0-beta-0004 124 7/1/2025
1.6.0-beta-0003 128 6/30/2025
1.5.1 464 6/30/2025
1.5.0 126 6/30/2025
1.4.0 133 6/30/2025
1.4.0-beta-0002 129 6/30/2025
1.4.0-beta-0001 124 6/30/2025
1.4.0-alpha-0002 119 6/29/2025
1.3.0 127 6/29/2025
1.2.0 125 6/29/2025
1.1.0 131 6/29/2025
1.1.0-alpha-0004 129 6/29/2025
1.1.0-alpha-0001 129 6/29/2025
1.0.0 133 6/29/2025
1.0.0-g0d103c2df8 88 6/28/2025
1.0.0-alpha-0013 131 6/29/2025
1.0.0-alpha-0012 87 6/28/2025
1.0.0-alpha-0007 65 6/27/2025
1.0.0-alpha-0006 68 6/27/2025
1.0.0-alpha-0005 71 6/27/2025
1.0.0-alpha-0004 121 6/27/2025