@Erel, you mention that "You need to add all the shared logic to GameCharacter".
From outside the classes (e.g. from AppStart), how would you call methods that are defined in the GameCharacter base class?
For example, if the GC class had a vanilla Hello method (used by the Knight and Archer classes without customization), how would you call Hello from AppStart? Can it be made visible and callable directly, or would you need to implement a Hello method in the Knight and Archer classes that then called gc.Hello?
(I'm writing a poker app that will have several types of players (e.g. stupid, average, smart), and I'm trying to decide how to model the classes and methods for them, without endless Select Case blocks. If I can use composition instead of inheritance or interfaces, that sounds promising.)
Thanks!