Right now these items have all of the attributes restated in their classes. If something changes in ShortSpear.cs, then GiftShortSpear.cs and LevelShortSpear.cs would also need to be changed by hand to reflect the difference (if the object is to keep these items in-line with each other).
I think the issue is because they are of base LevelableObject or GiftableObject, so there is not any dual inheritance going on.
Right now these items have all of the attributes restated in their classes. If something changes in ShortSpear.cs, then GiftShortSpear.cs and LevelShortSpear.cs would also need to be changed by hand to reflect the difference (if the object is to keep these items in-line with each other).
I think the issue is because they are of base LevelableObject or GiftableObject, so there is not any dual inheritance going on.
Multiple inheritance is not a thing in C#, but we could use composition: https://stackoverflow.com/questions/178333/multiple-inheritance-in-c-sharp