ProxyInterfaceGenerator 0.4.0
dotnet add package ProxyInterfaceGenerator --version 0.4.0
NuGet\Install-Package ProxyInterfaceGenerator -Version 0.4.0
<PackageReference Include="ProxyInterfaceGenerator" Version="0.4.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add ProxyInterfaceGenerator --version 0.4.0
#r "nuget: ProxyInterfaceGenerator, 0.4.0"
// Install ProxyInterfaceGenerator as a Cake Addin #addin nuget:?package=ProxyInterfaceGenerator&version=0.4.0 // Install ProxyInterfaceGenerator as a Cake Tool #tool nuget:?package=ProxyInterfaceGenerator&version=0.4.0
Usage
Given: an external existing class which does not implement an interface
public sealed class Person
{
public string Name { get; set; }
public string HelloWorld(string name)
{
return $"Hello {name} !";
}
}
Create a partial interface
And annotate this with ProxyInterfaceGenerator.Proxy[...]
and with the Type which needs to be wrapped:
[ProxyInterfaceGenerator.Proxy(typeof(ProxyInterfaceConsumer.Person))]
public partial interface IPerson
{
}
When the code is compiled, this source generator creates the following two items:
1. An additional partial interface Which defines the same properties and methods as in the external class.
public partial interface IPerson
{
string Name { get; set; }
string HelloWorld(string name);
}
2. A Proxy class Which takes the external class in the constructor and wraps all properties and methods.
public class PersonProxy : IPerson
{
public Person _Instance { get; }
public PersonProxy(Person instance)
{
_Instance = instance;
}
public string Name { get => _Instance.Name; set => _Instance.Name = value; }
public string HelloWorld(string name)
{
string name_ = name;
var result_19479959 = _Instance.HelloWorld(name_);
return result_19479959;
}
}
Use it
IPerson p = new PersonProxy(new Person());
p.Name = "test";
p.HelloWorld("stef");
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
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 |
---|---|---|
0.4.0 | 118 | 9/30/2024 |
0.3.0 | 117 | 9/24/2024 |
0.2.0 | 86 | 9/23/2024 |
0.1.0 | 207 | 4/28/2024 |
0.0.38 | 123 | 4/23/2024 |
0.0.37 | 334 | 12/6/2023 |
0.0.36 | 325 | 10/10/2023 |
0.0.35 | 348 | 3/2/2023 |
0.0.34 | 260 | 2/25/2023 |
0.0.31 | 277 | 2/21/2023 |
0.0.30 | 442 | 1/23/2023 |
0.0.29 | 265 | 1/9/2023 |
0.0.28 | 315 | 1/8/2023 |
0.0.27 | 347 | 12/17/2022 |
0.0.26 | 296 | 12/14/2022 |
0.0.25 | 335 | 12/13/2022 |
0.0.24 | 3,443 | 9/5/2022 |
0.0.23 | 403 | 9/4/2022 |
0.0.22 | 531 | 5/9/2022 |
0.0.21 | 462 | 5/8/2022 |
0.0.20 | 405 | 5/8/2022 |
0.0.19 | 455 | 5/8/2022 |
0.0.18 | 456 | 5/8/2022 |
0.0.17 | 460 | 5/7/2022 |
0.0.16 | 474 | 5/6/2022 |
0.0.15 | 460 | 2/6/2022 |
0.0.14 | 492 | 2/4/2022 |
0.0.13 | 461 | 2/2/2022 |
0.0.12 | 477 | 2/1/2022 |
0.0.11 | 383 | 8/10/2021 |
0.0.10 | 423 | 8/6/2021 |
0.0.9 | 339 | 8/5/2021 |
0.0.8 | 371 | 8/3/2021 |
0.0.6 | 406 | 8/1/2021 |
0.0.5 | 434 | 7/31/2021 |
0.0.4 | 374 | 7/28/2021 |
0.0.3 | 415 | 7/25/2021 |
0.0.2 | 351 | 7/25/2021 |
0.0.1 | 395 | 7/25/2021 |
# 0.4.0 (30 September 2024)
- #77 Add functionality to ignore members while generating interface and proxy [enhancement]
- #74 Is there a way we can lazy load interface mappings? [enhancement]
The full release notes can be found here: https://github.com/StefH/ProxyInterfaceSourceGenerator/blob/main/ReleaseNotes.md