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