Proxier 1.3.25

There is a newer version of this package available.
See the version list below for details.
dotnet add package Proxier --version 1.3.25
NuGet\Install-Package Proxier -Version 1.3.25
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="Proxier" Version="1.3.25" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Proxier --version 1.3.25
#r "nuget: Proxier, 1.3.25"
#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 Proxier as a Cake Addin
#addin nuget:?package=Proxier&version=1.3.25

// Install Proxier as a Cake Tool
#tool nuget:?package=Proxier&version=1.3.25

<div align="center"> <a href="https://github.com/MahApps/MahApps.Metro"> <img alt="MahApps.Metro" width="200" heigth="200" src="https://image.flaticon.com/icons/svg/51/51650.svg"> </a> <h1>Proxier</h1>

GitHub license Twitter NuGet Build status </div>

Introduction ℹī¸

Have you ever had a class that is generated during the build process or at runtime but you need to add attributes to it? This is the solution! You can add attributes and even properties to classes at runtime by defining an extension class!

Features

  • 🐱‍👤 Out of the box support for Ninject!
  • 🕛 0 configuration time, just start using.
  • ℹī¸ Semantic extensions, easy to use.
  • .NET Core support

Code Samples ✏ī¸

Say that you are using NSwag to generate swagger based classes, but they change a lot and you are worried that you forget to add some attributes to it and decide to use this library:

First you'll install the NuGet package

Install-Package Proxier

Then you'll create a extension class like so:

    public class MyClassExtension : AttributeMapper<MyClass> {
        public MyClassExtension(){
            //Here you can add any class attributes, properties attributes and even properties!
            AddPropertyAttribute(u => u.Business, () => new MyAttribute());
            AddProperty("MyProperty", typeof(string));
            AddClassAttribute(() => new MyAttribute());
        } 
    }

and then these properties will be added to a static mapper list, the Mapper.TypesOverrides with all the current extensions. To convert a object from the "MyClass" type to the injected type you would call:

typeof(MyClass).GetInjectedType();

To get a injected object you can use:

var InjectedMyClassObject = MyClassObject.GetInjectedObject();

Note that you can convert the inject object back to the original type by calling

InjectedMyClassObject.CopyTo(MyClassObject);

and all the common properties will be overriden by the ones on the injected type.

Dependency Injection

You can pass a Kernel to the Mapper initializer like this:

Mapper.InitializeMapperClasses(MyNinjectKernel);

and use the default [Inject] attribute from Ninject to get properties inside the extension class which in turn can add those into its current extended type.

Built With 🔧

License 📚

This project is licensed under the MIT License - see the LICENSE.md file for details

This documentation is incomplete and may change overtime.

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

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Proxier:

Package Downloads
WpfMaterialForms

Dynamically generated forms and dialogs in WPF

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Proxier:

Repository Stars
WPF-Forge/Forge.Forms
Dynamically generated forms and dialogs in WPF
Version Downloads Last updated
1.7.3 4,346 11/13/2020
1.7.2 13,922 9/24/2019
1.7.1 545 9/24/2019
1.7.0 749 7/15/2019
1.6.27 827 4/26/2019
1.6.26 646 4/26/2019
1.6.25 699 2/4/2019
1.6.24 714 12/31/2018
1.6.23 731 9/25/2018
1.6.22 715 9/25/2018
1.6.21 713 9/25/2018
1.6.20 1,070 7/12/2018
1.6.19 843 6/4/2018
1.6.18 983 6/1/2018
1.6.17 957 6/1/2018
1.6.16 952 5/28/2018
1.6.15 977 5/27/2018
1.6.14 939 5/27/2018
1.6.13 914 5/27/2018
1.6.12 892 5/18/2018
1.6.11 971 5/13/2018
1.6.10 962 5/13/2018
1.6.9 911 5/11/2018
1.6.8 823 5/11/2018
1.6.7 848 5/11/2018
1.6.6 953 5/11/2018
1.6.5 920 5/11/2018
1.6.4 919 5/11/2018
1.6.3 926 5/7/2018
1.6.1 1,038 5/4/2018
1.6.0 995 5/4/2018
1.5.16 986 5/4/2018
1.5.15 991 5/4/2018
1.5.8 1,027 3/21/2018
1.5.7 1,137 1/23/2018
1.5.6 1,140 1/19/2018
1.5.5 939 1/18/2018
1.5.4 984 1/18/2018
1.5.2 986 1/18/2018
1.5.1 946 1/14/2018
1.4.7 844 1/12/2018
1.4.6 1,087 1/12/2018
1.4.5 1,051 1/12/2018
1.4.4 1,040 1/12/2018
1.4.3 943 1/12/2018
1.4.2 935 1/12/2018
1.3.42 968 1/12/2018
1.3.37 858 1/12/2018
1.3.36 964 1/12/2018
1.3.35 916 1/12/2018
1.3.34 927 1/11/2018
1.3.31 831 1/11/2018
1.3.30 853 1/11/2018
1.3.29 933 1/11/2018
1.3.28 992 1/11/2018
1.3.27 1,038 1/9/2018
1.3.26 993 1/5/2018
1.3.25 1,180 1/2/2018
1.3.24 928 1/2/2018
1.3.22 1,028 1/2/2018
1.3.21 913 1/2/2018
1.3.19 992 1/2/2018
1.3.18 1,035 12/28/2017
1.3.17 1,981 12/28/2017
1.3.14 1,047 12/28/2017
1.3.13 999 12/28/2017
1.3.12 1,051 12/28/2017
1.3.11 985 12/28/2017
1.3.10 1,144 12/27/2017
1.3.9 1,035 12/27/2017
1.3.8 1,034 12/26/2017
1.3.7 1,012 12/26/2017
1.2.0 1,009 12/26/2017
1.1.0-CI-20171226-221311 834 12/26/2017
1.1.0-CI-20171226-194624 831 12/26/2017
1.1.0-CI-20171226-193711 873 12/26/2017
1.1.0-CI-20171226-192301 857 12/26/2017
1.0.0 1,091 12/26/2017
1.0.0-CI-20171226-190923 772 12/26/2017
1.0.0-CI-20171226-190646 799 12/26/2017
1.0.0-CI-20171226-185857 810 12/26/2017
1.0.0-CI-20171226-101027 751 12/26/2017
1.0.0-CI-20171226-100435 902 12/26/2017
1.0.0-CI-20171226-010925 776 12/26/2017
1.0.0-CI-20171226-001129 804 12/26/2017
1.0.0-CI-20171226-000814 801 12/26/2017
1.0.0-CI-20171225-234201 822 12/25/2017
1.0.0-CI-20171225-233342 804 12/25/2017
1.0.0-CI-20171225-152215 804 12/25/2017
1.0.0-CI-20171225-151907 771 12/25/2017
1.0.0-CI-20171224-230634 781 12/24/2017
1.0.0-CI-20171224-224940 728 12/24/2017
1.0.0-CI-20171224-160349 816 12/24/2017
1.0.0-CI-20171224-155718 810 12/24/2017
1.0.0-CI-20171224-145609 749 12/24/2017
1.0.0-CI-20171224-021301 784 12/24/2017
1.0.0-CI-20171224-020847 771 12/24/2017
1.0.0-CI-20171224-014607 786 12/24/2017
1.0.0-CI-20171224-014310 799 12/24/2017
1.0.0-CI-20171223-203607 896 12/23/2017
1.0.0-CI-20171223-203454 787 12/23/2017
1.0.0-CI-20171223-203212 802 12/23/2017

Initial release