Вы не можете изменить существующий класс, чтобы он реализовал ваш собственный интерфейс. Однако вы можете спроектировать свой собственный интерфейс, в котором ваши методы возвращают классы, которые уже существуют - например, в пространстве имен System.IO.
Вы также можете реализовать свой собственный класс, который оборачивает классы System.IO, чтобы ваш IOInterface.Delete отображался в FileInfo.Delete (пожалуйста, простите синтаксис C #, мой VB ржавый):
public class MyFileClass : IOInterface
{
public void DeleteFile(string fileName)
{
new FileInfo(fileName).Delete();
}
}
В ответ на № 3:
Да. Переменная типа IOInterface может содержать любой тип, реализующий этот интерфейс. Вы также можете позже привести его к определенному типу, если вам нужно.