My bad - should have tested my code properly under C#. I hate it when they make C# and VB.Net behave differently but in subtle ways.
In C# the new keyword doesn't hide the original method signature, however in VB.Net the Shadows keyword does completely hide the original method!!!
Will have a look to see if there is anything else that could be done....
as a quickie have you considered
// Overload ObjectCollection.Add, which is declared as:
// public int Add(object item)
public int Add(MyItem item)
{
return base.Add(item);
}
public new int Add(object item)
{
if (item.GetType() != typeof(MyItem))
throw new ArgumentException("Can only accept MyItem", "item");
return 0;
}