Sort:  

What was the problem you had with Dictionary?

I use them a fair deal in my code but do not tend to pass them around. I prefer to pass their lookup function around. So if I have a Dictionary<int, Person> I will pass around a Func<int, Person>

That way I do not care what the storage is :)

Unity is a different space as threaded, the C# collections are not thread safe

The XmlSerializer I had to use could not serialize Dictionaries. At first I had a workaround, but it just became too much of a struggle with several dictionaries so I had to switch To Lists or Arrays.

Btw, check out my posts. I have a series on pushing C# outside the OO norms