Joh*_*ams 2 c# arrays arguments overloading visual-studio
支持传递给C#函数的可选数据的最佳方法是什么?
我在.Net中有web服务功能,定义了5个参数:
[WebMethod]
public string UploadFile( string wsURL
, byte[] incomingArray
, string FileName
, string RecordTypeName
, MetaData[] metaDataArray)
Run Code Online (Sandbox Code Playgroud)
这个函数的代码不是太长(但也不是很简单),如果要处理任何MetaData [],我执行此测试的函数中只有一个位置:
if (metaDataArray.Length > 0)
{
Update update = BuildMetaData(metaDataArray);
treq2.Items = new Operation[] { sru, cin, update, fetch};
}
else
{
treq2.Items = new Operation[] { sru, cin, fetch};
}
Run Code Online (Sandbox Code Playgroud)
我需要上面的快速和脏版本,只需要4个参数(即没有"元数据"数组作为最终参数)所以我克隆了整个函数并删除了引用元数据的IF-ELSE块.丑陋,我知道.
[WebMethod]
public string UploadFileBasic( string wsURL
, byte[] incomingArray
, string FileName
, string RecordTypeName)
Run Code Online (Sandbox Code Playgroud)
现在我想做更好的事情,我正在寻找有关支持这一点的最佳方法的建议.我不想通过创建一个空数组作为第五个参数来加重客户端程序...我希望我的Web服务功能足够智能来处理这个可选数据.谢谢.
在需要5个参数的方法中更改您的检查(注意,您应该检查该值是否为null).
if (metaDataArray != null && metaDataArray.Length > 0)
{
Update update = BuildMetaData(metaDataArray);
treq2.Items = new Operation[] { sru, cin, update, fetch };
}
else
{
treq2.Items = new Operation[] { sru, cin, fetch};
}
Run Code Online (Sandbox Code Playgroud)
然后,让你的4参数版本在内部调用5参数版本,metaDataArray参数为null.
[WebMethod]
public string UploadFileBasic( string wsURL,
byte[] incomingArray,
string FileName,
string RecordTypeName)
{
return UploadFile( wsUrl, incomingArray, fileName, RecordTypeName, null );
}
Run Code Online (Sandbox Code Playgroud)