The problem with this is that the Items collection can contain 0-n items of any particular type, so RootWorkItem.Items[typeof(IFoo)] would have to return an array, not a single item.
If you only need one of the item, the Services collection already does exactly this:
IFoo item = RootWorkItem.Services.Get<IFoo>();
If getting back a collection is OK, then the Items collection already can do it this way (with code I checked in yesterday).
Foo foo = new Foo;