Defining the domain layer abstraction
Once the PackagesManagementDomain
Standard 2.1 library project has been added to the solution, we’ll add a Tools
folder to the project root. Then, we’ll place all the DomainLayer
tools contained in the code associated with ch11
. Since the code contained in this folder uses data annotations and defines DI extension methods, we must also add references to the System.ComponentModel.Annotations
and Microsoft.Extensions.DependencyInjection.Abstration
NuGet packages.
Then, we need an Aggregates
folder containing all the aggregate definitions (remember, we implemented aggregates as interfaces), namely, IDestination
, IPackage
, and IPackageEvent
. Here, IPackageEvent
is the aggregate associated with the table where we will place events to be propagated to other applications.
As an example, let’s analyze IPackage
:
public interface IPackage : IEntity<int>
{
void FullUpdate(IPackageFullEditDTO packageDTO);
string...