SKhan.Specification
0.1.3
dotnet add package SKhan.Specification --version 0.1.3
NuGet\Install-Package SKhan.Specification -Version 0.1.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SKhan.Specification" Version="0.1.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SKhan.Specification" Version="0.1.3" />
<PackageReference Include="SKhan.Specification" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SKhan.Specification --version 0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SKhan.Specification, 0.1.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=SKhan.Specification&version=0.1.3
#tool nuget:?package=SKhan.Specification&version=0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Implementation of Specification DDD pattern
Usage: Create your own Specification
public sealed class UserSpecification(string name) : CompositeSpecification<User>
{
public override Expression<Func<User, bool>> IsSatisfiedByExpression() => user => user.Name == name;
}
//User class as reference
public class User
{
public string Name { get; set; }
}
Then in your code use this specification
public class Examples
{
//Filters a collection
public IReadonlyCollection<User> Filter(string nameToSearch)
{
var usersBySearch = users.Where(new UserSpecification(nameToSearch).IsSatisfiedBy).ToList();
//some your code
return usersBySearch;
}
//Defines if the user is satisfy the expression
public bool IsUserNameSergei(User user)
{
//some your code
return new UserSpecification("Sergei").IsSatisfiedBy(user);
}
}
To Use negative Specification use
public class Examples
{
//Filters a collection
public IReadonlyCollection<User> Filter(string nameNotToSearch)
{
var usersBySearch = users.Where(new UserSpecification(nameNotToSearch).Not().IsSatisfiedBy).ToList();
//some your code
return usersBySearch;
}
//Defines if the user is satisfy the expression
public bool IsUserNameNotSergei(User user)
{
//some your code
return new UserSpecification("Sergei").Not().IsSatisfiedBy(user);
}
}
Or to use Several Specifications
public class Examples
{
//Filters a collection
public IReadonlyCollection<User> Filter(string nameNotToSearch)
{
var defaultName = "Frodo";
//This should return all users with names nameNotToSearch and Frodo
var usersBySearch = users.Where(new UserSpecification(nameNotToSearch).Or(new UserSpecification(defaultName)).IsSatisfiedBy).ToList();
//some your code
return usersBySearch;
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- No dependencies.
-
net9.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.
Update project descriptions