public IReadOnlyDictionary <DeviceStatus, Action <Action> > Create( Action <Action> claimMoneyBack, Action <Action> claimNotOperational, Action <Action> claimCircuitry) => new Dictionary <DeviceStatus, Action <Action> > { [DeviceStatus.AllFine()] = claimMoneyBack, [DeviceStatus.AllFine().NotOperational()] = claimNotOperational, [DeviceStatus.AllFine().WithVisibleDamage()] = (action) => { }, [DeviceStatus.AllFine().NotOperational().WithVisibleDamage()] = claimNotOperational, [DeviceStatus.AllFine().CircuitryFailed()] = claimCircuitry, [DeviceStatus.AllFine().NotOperational().CircuitryFailed()] = claimNotOperational, [DeviceStatus.AllFine().CircuitryFailed().WithVisibleDamage()] = claimCircuitry, [DeviceStatus.AllFine().NotOperational().WithVisibleDamage()] = claimNotOperational, };
public SoldArticle(IWarranty moneyBack, IWarranty express, IWarrantyMapFactory rulesFactory) { if (moneyBack == null) { throw new ArgumentNullException(nameof(moneyBack)); } if (express == null) { throw new ArgumentNullException(nameof(express)); } this.MoneyBackGuarantee = moneyBack; this.ExpressWarranty = VoidWarranty.Value; this.NotOperationalWarranty = express; this.CircuitryWarranty = VoidWarranty.Value; // With objects methods calls this.OperationalStatus = DeviceStatus.AllFine(); this.WarrantyMap = rulesFactory.Create( this.ClaimMoneyBack, this.ClaimNotOperationalWarranty, this.ClaimCircuitryWarranty); }
public SoldArticle(IWarranty moneyBackGuatrantee, IWarranty expressWarranty, IWarranryMapFactory rulesFactory) { if (moneyBackGuatrantee == null) { throw new ArgumentNullException(nameof(moneyBackGuatrantee)); } if (expressWarranty == null) { throw new ArgumentNullException(nameof(expressWarranty)); } MoneyBackGuatrantee = moneyBackGuatrantee; NotOperationalWarranty = expressWarranty; CircuitryWarranty = VoidWarranty.Instance; OperationalStatus = DeviceStatus.AllFine(); //WarrantyMap = WarrantyRules.GetCommonRule( // ClaimMoneyBack, ClaimNotOperationalWarranty, ClaimCircuitryWarranty); WarrantyMap = rulesFactory.Create(ClaimMoneyBack, ClaimNotOperationalWarranty, ClaimCircuitryWarranty); }