Ossendorf.Csla.DataPortalExtensionGenerator
0.0.1-alpha4.7
See the version list below for details.
dotnet add package Ossendorf.Csla.DataPortalExtensionGenerator --version 0.0.1-alpha4.7
NuGet\Install-Package Ossendorf.Csla.DataPortalExtensionGenerator -Version 0.0.1-alpha4.7
<PackageReference Include="Ossendorf.Csla.DataPortalExtensionGenerator" Version="0.0.1-alpha4.7" />
paket add Ossendorf.Csla.DataPortalExtensionGenerator --version 0.0.1-alpha4.7
#r "nuget: Ossendorf.Csla.DataPortalExtensionGenerator, 0.0.1-alpha4.7"
// Install Ossendorf.Csla.DataPortalExtensionGenerator as a Cake Addin #addin nuget:?package=Ossendorf.Csla.DataPortalExtensionGenerator&version=0.0.1-alpha4.7&prerelease // Install Ossendorf.Csla.DataPortalExtensionGenerator as a Cake Tool #tool nuget:?package=Ossendorf.Csla.DataPortalExtensionGenerator&version=0.0.1-alpha4.7&prerelease
DataPortal extensions for CSLA.NET
A Source Generator package that generates extension methods for IDataPortal<T>
and IChildDataPortal<T>
.
The extension methods are derived from annotated methods of business objects using CSLA.NET attributes like Fetch
, Create
, ...
.
How to install
dotnet add package Ossendorf.Csla.DataPortalExtensionsGenerator
<PackageReference Include="Ossendorf.Csla.DataPortalExtensionsGenerator" Version="0.0.1-pre02" PrivateAssets="all" ExcludeAssets="runtime" />
Either way adds the source generator to your project. Make sure to add PrivateAssets="all" ExcludeAssets="runtime"
to mark it as a build dependency. Otherwise it flows to projects which depend on your project.
To use the generator, add the [Ossendorf.Csla.DataPortalExtensionsGenerator.DataPortalExtensions]
attribute to a class which should containt the extensions.
For example:
[Ossendorf.Csla.DataPortalExtensionsGenerator.DataPortalExtensions]
public static partial class DataPortalExtensions {
}
Your business object:
namespace MyNamespace;
public class Address : BusinessBase<Address> {
[Create]
private void CreateLocally() {
// creation logic
}
[Fetch]
private async Task ById(Guid id) {
// fetch logic
}
}
This will generate the following code:
static partial class DataPortalExtensions {
public static global::System.Threading.Tasks.Task<global::MyNamespace.Address> CreateLocally(this global::Csla.IDataPortal<global::MyNamespace.Address> portal) => portal.CreateAsync();
public static global::System.Threading.Tasks.Task<global::MyNamespace.Address> ById(this global::Csla.IDataPortal<global::MyNamespace.Address> portal, global::System.Guid id) => portal.FetchAsync(id);
}
Raodmap
- Special case commands to an extension like
commandPortal.ExecuteCommand(<params>)
which combinesCreate
+Execute
. - Support for generic business objects
- Improve handling of csla method parameters which are
internal
and not available - Add configurability
- Add attribute as prefix/suffix:
ById(id)
→FetchById(id)
ById(id)
→ByIdFetch(id)
- Exclude non-public business objects from generation
- Exclude methods with non-public parameter types
- Add attribute as prefix/suffix:
- Add attribute to exclude methods explicitly
A lot of implementation details are derived/taken from the great series Andrew Lock: Creating a source generator. If you want to create your own source generator I can recommend that series wholeheartedly.
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 | |
---|---|---|---|
1.0.0 | 787 | 10/7/2024 | |
0.5.0-preview1 | 2,626 | 3/31/2024 | |
0.4.1-preview1 | 143 | 3/1/2024 | |
0.4.0-preview1 | 95 | 2/27/2024 | |
0.3.0-preview3 | 355 | 2/25/2024 | |
0.3.0-preview2 | 75 | 2/25/2024 | |
0.2.0-preview1.9 | 54 | 2/25/2024 | |
0.2.0-preview1 | 102 | 2/22/2024 | |
0.1.0-preview2 | 78 | 2/21/2024 | |
0.1.0-preview1 | 88 | 2/11/2024 | |
0.0.1-alpha4.7 | 71 | 2/10/2024 | |
0.0.1-alpha4.6 | 61 | 2/10/2024 | |
0.0.1-alpha4.3 | 59 | 2/10/2024 |