我想对一个压缩的功能进行包装,为了实现压缩不同格式的扩展。我定义了接口。如下: 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);
}但是定义后发现这样定义参数使用的灵活性太差了,要实现的功能还远远不够。如何避免这样的设计?有什么好的解决方案。
{
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);
}但是定义后发现这样定义参数使用的灵活性太差了,要实现的功能还远远不够。如何避免这样的设计?有什么好的解决方案。
如果确实项目需要的话,另外C#4.0有可选参数 对这种问题就更方便了。
类型 方法名(相同的参数,相同的参数,..., params object[] obj);
eg:bool DecompressFiles(string compressFileName,params object[] obj)