Do you really need it to be a struct? This is painfully easy with a class; if you need a struct, you can always just have your class emit a typed struct in your subclass. Don't be afraid to harness the much greater power of a class and emit a struct if you need the lighter weight for moving the data around.
Food for thought.