public class Bullet { public BulletType { get; set; } } public class SingleBullet : Bullet { } public class LaserBullet : Bullet { } public class SpreadBullet : Bullet { } public struct BulletPattern { Bullet bullet; public BulletPattern (Bullet _bullet) { bullet = _bullet; } //Accesors public BulletType Type { get { return bullet.Type; } } public Bullet Bullet { get { return bullet; } } }