我想对一个压缩的功能进行包装,为了实现压缩不同格式的扩展。我定义了接口。如下: public interface ICompression
{
bool CompressFiles(string zipFileName, string[] fileNames);
bool CompressFiles(string compressFileName, string comment, string[] fileNames);

/// <summary>
/// 压缩文件
/// </summary>
/// <param name="zipFileName">压缩文件名</param>
/// /// <param name="password">密码</param>
/// <param name="comment">注释</param>
/// <param name="fileNames">压缩文件目录数组</param>
/// <returns></returns>
bool CompressFiles(string compressFileName, string password, string comment, string[] fileNames); bool DecompressFiles(string compressFileName, string fileDir);
/// <summary>
/// 解压缩文件
/// </summary>
/// <param name="compressFileName">压缩 文件名</param>
/// <param name="password">密码</param>
/// <param name="fileDir">解压目录</param>
/// <returns></returns>
bool DecompressFiles(string compressFileName, string password, string fileDir);
}但是定义后发现这样定义参数使用的灵活性太差了,要实现的功能还远远不够。如何避免这样的设计?有什么好的解决方案。

解决方案 »

  1.   

    可以直接用object象这样void M(params object[]);这样参数你随便传就是了。。
      

  2.   

    只不过得小心一点 params object[]这种 WS(WebService)是不支持的,WCF大概也不行。所以多重载几个吧不会死人的
    如果确实项目需要的话,另外C#4.0有可选参数 对这种问题就更方便了。
      

  3.   

    扩展下五楼的,呵呵
    类型 方法名(相同的参数,相同的参数,..., params object[] obj); 
    eg:bool DecompressFiles(string compressFileName,params object[] obj)