All the generic collection interfaces from the System.Collections.Generic namespace are supported by OpenAccess ORM, however classes from this namespace are not supported. In case of non-generic collections (in the System.Collection namespace), OpenAccess ORM supports both interfaces and classes.
The reason for this is, that to provide change tracking and lazy loading OpenAccess ORM needs to replace collection classes at runtime (e.g. TrackedArrayList instead of ArrayList). The tracked collections are derived from the original collections classes, and provide the needed additional services.
Unlike the old non-generic collections, from the System.Collections namespace, the new generic collection and dictionary implementations, does not allow to derive our internal implementation classes from them. This is due to the fact that most methods are not virtual. The internal implementation classes are needed to provide the services of lazy loading and automatic change tracking.
Due to this reason, only interfaces from the System.Collections.Generic namespace are supported , specifically these are: ICollection<>, IList<> and IDictionary<>