fix money type
This commit is contained in:
@@ -1,32 +1,7 @@
|
|||||||
namespace CsharpFp1.Domain;
|
namespace CsharpFp1.Domain;
|
||||||
|
|
||||||
/// Value object used to represent money and enforce simple invariants.
|
public sealed record Money(decimal Amount)
|
||||||
/// Note that this implementation uses immutable patterns for the data
|
|
||||||
/// by returning a new instance for each modification. This is an early
|
|
||||||
/// recommendation for DDD with OO, but not necessarily the common practice
|
|
||||||
/// in many real-world implementations.
|
|
||||||
public sealed class Money
|
|
||||||
{
|
{
|
||||||
// Potentially with a setter - see note above
|
|
||||||
public decimal Amount { get; }
|
|
||||||
|
|
||||||
public Money(decimal amount)
|
|
||||||
{
|
|
||||||
Amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
// In many existing DDD/OO codebases you may actually see the use
|
|
||||||
// of mutable value types.
|
|
||||||
//
|
|
||||||
// public void Add(Money other)
|
|
||||||
// {
|
|
||||||
// this.Amount += other.Amount;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// On the other hand, sometimes these helpers may be left out
|
|
||||||
// and operations encoded directly "from the outside":
|
|
||||||
// newBalance = new Money(oldBalance.Amount - charge.Amount)
|
|
||||||
//
|
|
||||||
public Money Add(Money other) => new(Amount + other.Amount);
|
public Money Add(Money other) => new(Amount + other.Amount);
|
||||||
|
|
||||||
public Money Subtract(Money other) => new(Amount - other.Amount);
|
public Money Subtract(Money other) => new(Amount - other.Amount);
|
||||||
|
|||||||
@@ -1,32 +1,7 @@
|
|||||||
namespace CsharpFp1.Domain;
|
namespace CsharpOopSimplified2.Domain;
|
||||||
|
|
||||||
/// Value object used to represent money and enforce simple invariants.
|
public sealed record Money(decimal Amount)
|
||||||
/// Note that this implementation uses immutable patterns for the data
|
|
||||||
/// by returning a new instance for each modification. This is an early
|
|
||||||
/// recommendation for DDD with OO, but not necessarily the common practice
|
|
||||||
/// in many real-world implementations.
|
|
||||||
public sealed class Money
|
|
||||||
{
|
{
|
||||||
// Potentially with a setter - see note above
|
|
||||||
public decimal Amount { get; }
|
|
||||||
|
|
||||||
public Money(decimal amount)
|
|
||||||
{
|
|
||||||
Amount = amount;
|
|
||||||
}
|
|
||||||
|
|
||||||
// In many existing DDD/OO codebases you may actually see the use
|
|
||||||
// of mutable value types.
|
|
||||||
//
|
|
||||||
// public void Add(Money other)
|
|
||||||
// {
|
|
||||||
// this.Amount += other.Amount;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// On the other hand, sometimes these helpers may be left out
|
|
||||||
// and operations encoded directly "from the outside":
|
|
||||||
// newBalance = new Money(oldBalance.Amount - charge.Amount)
|
|
||||||
//
|
|
||||||
public Money Add(Money other) => new(Amount + other.Amount);
|
public Money Add(Money other) => new(Amount + other.Amount);
|
||||||
|
|
||||||
public Money Subtract(Money other) => new(Amount - other.Amount);
|
public Money Subtract(Money other) => new(Amount - other.Amount);
|
||||||
|
|||||||
Reference in New Issue
Block a user