当前位置:编程学习 > C#/ASP.NET >>

2个方法怎么抽象成一个方法

方法一:

        /// <summary>
        /// 导入KML
        /// </summary>
        /// <param name="swmName">工作空间名称</param>
        /// <param name="strDsName">数据源名称</param>
        /// <param name="strTargetName">导入后的文件名称</param>
        /// <param name="strFileName">导入文件名称</param>
        public void ImportKML(string swmName, string strDsName,  string strTargetName, string strFileName)
        {
            mWorkspace = new SuperMap.Data.Workspace();
            mMapControl = new SuperMap.UI.MapControl(mWorkspace);
            WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo(swmName);
            bool ret = mWorkspace.Open(connectionInfo);
            mMapControl.Map.Workspace = mWorkspace;
          
            objDss = mWorkspace.Datasources;
            objDs = objDss[strDsName];
            DataImport mDataImport = new DataImport();
            ImportSettingKML Import = new ImportSettingKML();
            Import.ImportMode = ImportMode.Overwrite;
            Import.SourceFilePath = strFileName;
            Import.TargetDatasource = objDs;
            ImportDataInfos dataInfos = Import.GetTargetDataInfos("");
            ImportDataInfo info = dataInfos[0];  
            info.TargetName = strTargetName;
            Import.SetTargetDataInfos(dataInfos);
            mDataImport.ImportSettings.Add(Import);
            mDataImport.Run();
            mWorkspace.Save();  
        }
--------------------------------------------------------------------
方法二:
        /// <summary>
        /// 导入KMZ
        /// </summary>
        /// <param name="swmName">工作空间名称</param>
        /// <param name="strDsName">数据源名称</param>
        /// <param name="strTargetName">导入后的文件名称</param>
        /// <param name="strFileName">导入文件名称</param>
        public void ImportKMZ(string swmName, string strDsName, string strTargetName, string strFileName)
        {
            mWorkspace = new SuperMap.Data.Workspace();
            mMapControl = new SuperMap.UI.MapControl(mWorkspace);
            WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo(swmName);
            bool ret = mWorkspace.Open(connectionInfo);
            mMapControl.Map.Workspace = mWorkspace;

            objDss = mWorkspace.Datasources;
            objDs = objDss[strDsName];
            DataImport mDataImport = new DataImport();
            ImportSettingKMZ Import = new ImportSettingKMZ();
            Import.ImportMode = ImportMode.Overwrite;
            Import.SourceFilePath = strFileName;
            Import.TargetDatasource = objDs;
            ImportDataInfos dataInfos = Import.GetTargetDataInfos("");
            ImportDataInfo info = dataInfos[0];
            info.TargetName = strTargetName;
            Import.SetTargetDataInfos(dataInfos);
            mDataImport.ImportSettings.Add(Import);
            mDataImport.Run();
            mWorkspace.Save();
        }
------------------------------------------------------

两个方法唯一不同的地方是:
方法一:ImportSettingKML Import = new ImportSettingKML();
方法二:ImportSettingKMZ Import = new ImportSettingKMZ();

请问如何抽象?望高手指教。

--------------------编程问答-------------------- 让那两个类继承共同的父类或者实现一样的接口 --------------------编程问答-------------------- 写一个基类, ImportSettingKML 和 ImportSettingKMZ 继承自基类,  ImportKMZ方法作为virtual方法,由两个子类实现具体功能,如果有相同的,可以提取出来放到基类的  ImportKMZ 方法中,子类通过调用base.xxxx去执行基类方法 --------------------编程问答--------------------
    /// <summary>
        /// 导入KML
        /// </summary>
        /// <param name="swmName">工作空间名称</param>
        /// <param name="strDsName">数据源名称</param>
        /// <param name="strTargetName">导入后的文件名称</param>
        /// <param name="strFileName">导入文件名称</param>
        /// <param name="Import">new ImportSettingKML()或者new ImportSettingKMZ(),如果继承自某个接口最好用接口</param>
        public void ImportKML(string swmName, string strDsName,  string strTargetName, string strFileName,dynamic Import)
        {
            mWorkspace = new SuperMap.Data.Workspace();
            mMapControl = new SuperMap.UI.MapControl(mWorkspace);
            WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo(swmName);
            bool ret = mWorkspace.Open(connectionInfo);
            mMapControl.Map.Workspace = mWorkspace;
          
            objDss = mWorkspace.Datasources;
            objDs = objDss[strDsName];
            DataImport mDataImport = new DataImport();            
            Import.ImportMode = ImportMode.Overwrite;
            Import.SourceFilePath = strFileName;
            Import.TargetDatasource = objDs;
            ImportDataInfos dataInfos = Import.GetTargetDataInfos("");
            ImportDataInfo info = dataInfos[0];  
            info.TargetName = strTargetName;
            Import.SetTargetDataInfos(dataInfos);
            mDataImport.ImportSettings.Add(Import);
            mDataImport.Run();
            mWorkspace.Save();  
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,