.Net中的接口

时间:2010-08-21 07:45:33

标签: .net vb.net class interface io

我想使用相同的代码将文件复制到FTP服务器,并通过USB。我已经编写了一些代码,现在使用System.IO命名空间中的函数。

为了最大限度地减少代码重复,我已经从system.IO命名空间列出了我需要的功能,我正在考虑设计一个公开类似功能的接口,然后是两个类,一个用于FTP文件操作,一个用于当地的。

我有几个关于接口的问题:

  1. 可以设计我的界面,以便保留File.*Directory.*组织(以便在界面中声明的例程遵循与IO命名空间相同的层次结构)?
  2. 对于本地操作,是否有办法将函数从IO命名空间映射到相应的接口函数(编写类似Sub IO.File.Delete Implements IOInterface.File_Delete的内容)?
  3. 我可以声明类似Dim IOHandler As IOInterface的内容,假设IOInterface是我的界面名称吗?我可以同时写IOHandler = New LocalIOHandlerIOHandler = New FTPIOHandler,假设LocalIOHandlerFTPIOHandler是我实现IOInterface的两个类吗?
  4. 谢谢!
    CFP。

2 个答案:

答案 0 :(得分:1)

您无法更改现有类,以便它实现您自己的接口。但是,您可以设计自己的接口,其中方法返回已存在的类 - 如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类型的变量可以包含实现该接口的任何类型。如果需要,您也可以稍后将其转换为特定类型。

答案 1 :(得分:1)

我无法帮助你完成第一个我根本没有得到你的意思功能hierachi而是另外两个。没有没有语法可以实现将Call转发给方法的方法。例如。 (假鳕鱼我多年没写过VB)

Sub open(path as string)
  Begin
    Return File.Open path
  End

对于你的第3个你可以说消费代码不需要知道具体类型的接口点(它不是唯一的点)