Jon Skeet suggests an alternative which I like, as it avoids polluting the generics with information about the underlying/internal data structure: inject a delegate to handle list instantiation when it’s needed:
public class Lookup<A, B> { public Lookup( IDictionary<A, IList<B>> underlyingDict, Func<IList<B>> listCreator) { // client passes in a delegate that Lookup can use // to instantiate the desired list type ... } // ... remaining code }
No comments:
Post a Comment