It's having possibilities,I mean polymorphism for struct,and without a enum declaring thus it can be more scalable if you should use virtual call in a delegate class,cause it's just what virtual call is designed for.Since you record the Type all the time,you get rid of virtual call but lose scalability.I'm interesting in struct polymorphism because I can choose no virtual call when no runtime polymorphism is needed but not when I need