interface IFolderOrItem where TFolderOrItem : FolderOrItem {} abstract class FolderOrItem {} class Folder : FolderOrItem {} abstract class It
As far as the compiler is concerened, IFolderOrItem & IFolderOrItem are two completely different types.
IFolderOrItem
Document may inherit Item, but IFolderOrItem does not inherit IFolderOrItem
Document
Item
I'm relying on Marc or Jon to post links to the relevant portions of the C# spec.