使用在类中定义的有返回值的函数,如何得到执行结果反馈?
Posted Youse的二分口粮地
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用在类中定义的有返回值的函数,如何得到执行结果反馈?相关的知识,希望对你有一定的参考价值。
我们做开发时,程序执行完后最好会有个反馈结果,尤其是在庞大的程序中,如果有bug可以及时发现,不然很浪费时间...最近做sde的二次开发,创建数据集时要用到带有返回值的函数,因为在数据集上创建要素类需要用到这个数据集,声明一个全局变量,可以直接用这个返回值.但是在捕获错误方面受到了限制,因为有返回值的函数每一个节点都要有返回值,想直接得到反馈是不行的,想在方法执行后写结果反馈的代码是检测不到的.
只能向师傅求救,给我提供了两种方法解决,感觉很巧妙.
原来的代码:
Form1中的代码:
private void 创建数据集ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
IWorkspace2 workspace = (IWorkspace2)Cls_SDE.OpenSde();
string strDatasetName = txtFileName.Text;
if (strDatasetName == "")
{
MessageBox.Show("请输入要创建的数据集名称!", "错误提示");
return;
}
ISpatialReferenceFactory pSpatialReferenceFac = new SpatialReferenceEnvironmentClass();
ISpatialReference pSpatialReference = pSpatialReferenceFac.CreateProjectedCoordinateSystem
((int)esriSRProjCS4Type.esriSRProjCS_Beijing1954_3_Degree_GK_CM_120E);
gSdeFeatDs = Cls_SDE.CreateFeatureDataset(workspace, strDatasetName, pSpatialReference);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
调用的类中的方法:
public static IFeatureDataset CreateFeatureDataset(IWorkspace2 workspace, string strDatasetName, ISpatialReference spatialReference)
{
try
{
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
if (featureWorkspace == null)
{
return null;
}
if (isDatasetExist(workspace, strDatasetName))
{
return featureWorkspace.CreateFeatureDataset(strDatasetName, spatialReference);
//MessageBox.Show("创建数据集成功!"); //因为已经有返回值了,此处的代码是检测不到的
}
else
{
MessageBox.Show("创建数据集失败!!!");
return null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return null;
}
}
第一种方法:
在方法中声明一个IFeatureDataset类型的变量,比如:IFeatureDataset ss;把执行函数中的return删除,将执行结果赋值给ss,加上反馈,在if函数外面return ss
修改后是这样:
第二种方法就是在Form1中下功夫,原来的代码不变,在Form1中的函数中加一句if语句判断执行后的结果是否为null,很简单啊,为什么我想不到呢?
以上是关于使用在类中定义的有返回值的函数,如何得到执行结果反馈?的主要内容,如果未能解决你的问题,请参考以下文章