RSCG – Coplt.Dropping
 
 
| name | Coplt.Dropping | 
| nuget | https://www.nuget.org/packages/Coplt.Dropping/ | 
| link | https://github.com/2A5F/Coplt.Dropping | 
| author | 2A5F | 
Generating disposable
This is how you can use Coplt.Dropping .
The code that you start with is
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
	 <PropertyGroup>
        <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
        <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
    </PropertyGroup>
	 <ItemGroup>
	   <PackageReference Include="Coplt.Dropping" Version="0.5.1" OutputItemType="Analyzer" />
	   
	 </ItemGroup>
</Project>
The code that you will use is
using IDisposableGeneratorDemo;
//https://github.com/benutomo-dev/RoslynComponents
using (var db = new DALDB())
{
    Console.WriteLine("before releasing");
}
Console.WriteLine("after releasing");
using Coplt.Dropping;
namespace IDisposableGeneratorDemo;
[Dropping]
partial class DALDB :IDisposable
{
    private ConnectionDB cn;
    private ConnectionDB cn1;
    public DALDB()
    {
        cn = new ConnectionDB();
        cn1=new ConnectionDB();
    }
    [Drop]
    public void Drop()
    {
        cn.Dispose();
        cn1.Dispose();
    }
}
namespace IDisposableGeneratorDemo;
class ConnectionDB : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("disposing connectiondb");
    }
}
The code that is generated is
// <auto-generated/>
#nullable enable
using Coplt.Dropping;
namespace IDisposableGeneratorDemo {
internal partial class DALDB : global::System.IDisposable
{
    protected virtual void Dispose(bool disposing)
    {
        if (disposing) Drop();
    }
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }
    ~DALDB()
    {
        Dispose(false);
    }
}
} // namespace IDisposableGeneratorDemo
Code and pdf at
https://ignatandrei.github.io/RSCG_Examples/v2/docs/Coplt.Dropping
Leave a Reply