Working with composite elements
There are going to be times when your object structure isn’t the only thing with visitable child elements, and that’s absolutely fine. In our case, each Weapon
has a list of modifications that can also be expanded with a concrete visitor on demand. The solution for this scenario isn’t scary or undiscovered, it’s just a good-old inheritance question mixed with a little added iteration!
Open Weapon.cs
and update the WeaponMod
class code at the bottom of the file to match the following snippet, which implements the IElement
interface, adds the required Accept
method, and uses the concrete visitor parameter to call the corresponding visiting method just like we’ve done with our other visitable elements.
// 1
public class WeaponMod : IElement
{
public string Name;
public int Slot;
public int Level = 1;
public WeaponMod(string name, int slot)
{
this.Name = name;
this.Slot = slot...