COM is the only reason I am aware of, why interfaces are not implicit compatible to to object.Object. But COM is a very special case which probably can get a special solution? How about making /IUnknown/ a special interface without this compatibility and have all interfaces, not derived from IUnknown be compatible to Object?