RSCG_FunctionsWithDI_Base 2022.7.7.636

dotnet add package RSCG_FunctionsWithDI_Base --version 2022.7.7.636
NuGet\Install-Package RSCG_FunctionsWithDI_Base -Version 2022.7.7.636
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="RSCG_FunctionsWithDI_Base" Version="2022.7.7.636" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RSCG_FunctionsWithDI_Base --version 2022.7.7.636
#r "nuget: RSCG_FunctionsWithDI_Base, 2022.7.7.636"
#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 RSCG_FunctionsWithDI_Base as a Cake Addin
#addin nuget:?package=RSCG_FunctionsWithDI_Base&version=2022.7.7.636

// Install RSCG_FunctionsWithDI_Base as a Cake Tool
#tool nuget:?package=RSCG_FunctionsWithDI_Base&version=2022.7.7.636

FunctionsDI

Nuget

Generate (constructor) and functions calls similar with ASP.NET Core WebAPI ( [FromServices] will be provided by DI ) Also, verifies for null .

Usage 1 - generate constructors from methods

Reference into the csproj

<ItemGroup>
    <PackageReference Include="RSCG_FunctionsWithDI" Version="2022.7.7.636" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
    <PackageReference Include="RSCG_FunctionsWithDI_Base" Version="2022.7.7.636" />
</ItemGroup> 	
<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>

Then for every class you can write [FromServices]

using RSCG_FunctionsWithDI_Base;
//namespace if necessary
public partial class TestDIFunction
{
    public bool TestMyFunc1([FromServices] TestDI1 t1, [FromServices] TestDI2 t2, int x, int y)
    {
        return true;
    }
    //more functions
}

generates the constructor with needed details


public partial class TestDIFunction
{ 
private TestDI1 _TestDI1;
private TestDI2 _TestDI2;
public TestDIFunction  (TestDI1 _TestDI1,TestDI2 _TestDI2) //constructor generated with needed DI
 { 
this._TestDI1=_TestDI1;
this._TestDI2=_TestDI2;

 } //end constructor 

//making call to TestMyFunc1
public bool TestMyFunc1(int  x,int  y){ 
var t1 = this._TestDI1  ;
if(t1 == null) throw new ArgumentException(" service TestDI1  is null in TestDIFunction ");
var t2 = this._TestDI2  ;
if(t2 == null) throw new ArgumentException(" service TestDI2  is null in TestDIFunction ");
return  TestMyFunc1(t1,t2,x,y);
}

so you can call


var test=serviceProvider.GetService<TestDIFunction>();
Console.WriteLine(test.TestMyFunc1(10,3)); // calling without the [FromServices] arguments

Usage 2 - generate constructors from fields / constructors

<ItemGroup>
    <PackageReference Include="RSCG_FunctionsWithDI" Version="2022.7.7.636" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
    <PackageReference Include="RSCG_FunctionsWithDI_Base" Version="2022.7.7.636" />
</ItemGroup>	
<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GeneratedX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>

Assuming this classes, that you want to keep a minimum of parameters constructors

public partial class TestDIFunctionAdvWithConstructor
    {
        [RSCG_FunctionsWithDI_Base.FromServices]
        private TestDI1 NewTestDI1;

        [RSCG_FunctionsWithDI_Base.FromServices]
        public TestDI2 NewTestDI2 { get; set; }

        public readonly TestDI3 myTestDI3;

        private TestDIFunctionAdvWithConstructor(TestDI3 test)
        {
            myTestDI3= test;
        }
        
    }
    public partial class TestDIFunctionAdvNoConstructor
    {
        [RSCG_FunctionsWithDI_Base.FromServices]
        public TestDI1 NewTestDI1;

        [RSCG_FunctionsWithDI_Base.FromServices]
        private TestDI2 NewTestDI2 { get; set; }




    }

the generator will generate

namespace TestFunctionsWithDI

{ 
public partial class TestDIFunctionAdvNoConstructor
{ 
public TestDIFunctionAdvNoConstructor( TestDI1 _NewTestDI1,TestDI2 _NewTestDI2 ) 
{ 
this.NewTestDI1 = _NewTestDI1; 
this.NewTestDI2 = _NewTestDI2; 
}//end constructor 

 }//class
 }//namespace


namespace TestFunctionsWithDI

{ 
public partial class TestDIFunctionAdvWithConstructor
{ 
public TestDIFunctionAdvWithConstructor(TestDI3 test, TestDI1 _NewTestDI1, TestDI2 _NewTestDI2) : this (test) 
{ 
this.NewTestDI1 = _NewTestDI1; 
this.NewTestDI2 = _NewTestDI2; 
}//end constructor 

 }//class
 }//namespace

Enjoy!

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2022.7.7.636 423 7/7/2022
2022.7.4.34 376 7/3/2022
2022.6.19.1605 388 6/19/2022
2022.6.19.949 363 6/19/2022