The main problem with the SmartBag prior to today was that they actual type of the object passed was used as the key. This created a problem for polymorphism because proxied objects would be recorded as the actual type, and then when the view asked for them by the intended type, the object would not be found. I fixed this by having the Add method be generic and accept the intended type. This still looks pretty clean, allows multiple initialization, and supports proxied and subclassed objects. The full source code is still only in CodeCampServer, so you can swipe it from there.

Rather than address every capability, I think the tests best illustrate the current capabilities. If you’d like to see real code using the SmartBag, every controller and view in CodeCampServer are currently employing it. I’m really close to moving it to MvcContrib and providing a sample there so that it can be used more generically as well as be integrated into ConventionController. I really think this ends up being a nicer experience both on the controller and the view.

@Greg,
If I’m still not addressing your concern, please post a unit test that illustrates your desired behavior. OR, submit a patch to CodeCampServer that fixes SmartBag to your liking. It would help me understand your need.