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