Ik heb een class met (nested) data properties. Ik neem als voorbeeld even een auto:
Nu wil ik een set van instructies vastleggen, welke kijkt naar de eigenschappen van de auto en onder bepaalde condities acties onderneemt.
Bijvoorbeeld, stel dat de groefdiepte van de banden < 3 mm is. Ik wil dat de band vervangen wordt en de kosten op een rekening worden geplaatst, ruwweg:
Ik kan dit geheel in een een mooi klasse plaatsen, bijvoorbeeld als reparatiepakket (ik laat even in het midden op welk moment de methoden worden aangeroepen).
Nu dan mijn vraag. Ik wil dat de eindgebruiker, welke via de browser deze applicatie beheerd, zelf de voorwaarden en acties kan definiëren. Bijv:
C#: Vehicle.cs
1
2
3
4
5
| public class Vehicle { public FuelTank FuelTank { get; set; } public IList<Tire> Tires { get; set; } } |
Nu wil ik een set van instructies vastleggen, welke kijkt naar de eigenschappen van de auto en onder bepaalde condities acties onderneemt.
Bijvoorbeeld, stel dat de groefdiepte van de banden < 3 mm is. Ik wil dat de band vervangen wordt en de kosten op een rekening worden geplaatst, ruwweg:
C#:
1
2
3
4
5
6
7
8
| foreach (var tire in vehicle.Tires) { if (tire.Tread < 3) { ReplaceTire(tire); AddToBill("New tire", "$99"); } } |
Ik kan dit geheel in een een mooi klasse plaatsen, bijvoorbeeld als reparatiepakket (ik laat even in het midden op welk moment de methoden worden aangeroepen).
C#: VehicleRepairPackage.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| public class VehicleRepairPackage { private Vehicle _vehicle; private Bill _bill; public VehicleRepairPackage(Vehicle vehicle, Bill bill) { _vehicle = vehicle; _bill = bill; } void CheckFuelTank() { // Check if the fuel tank is more than 50% full if (_vehicle.FuelTank.Fuel < 50) { _vehicle.FuelTank.Fuel = 100; bill.AddCost("Refuelled fuel tank", "$35"); } } void CheckTires() { foreach (var tire in vehicle.Tires) { if (tire.Tread < 3) { tire = new Tire(); _bill.AddCost("New tire", "$99"); } } } } |
Nu dan mijn vraag. Ik wil dat de eindgebruiker, welke via de browser deze applicatie beheerd, zelf de voorwaarden en acties kan definiëren. Bijv:
- De gebruiker creëert een nieuw reparatiepakket
- De gebruiker kiest een (nested) property van het voertuig
- De gebruiker stelt een of meerdere condities in
- De gebruiker definieert 1 of meerdere acties.