This is an attempt at a fully generic trie implementation in c#.
Any type can be used as a key, as long as you can provide an iterator to break it into its elements. There are example in the test project; a real world string example, and a few others to abuse the concept.