在我的 Windows Phone 7.1 应用程序中,我必须发送一个使用 Bing 地理编码服务的请求(使用地址:http : //dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc/mex ,而无需Always generate message contracts
在我的服务参考设置)。
我的请求是这样提出的:
BingMapGeoCodeService.GeocodeRequest request = new BingMapGeoCodeService.GeocodeRequest();
request.Options = new BingMapGeoCodeService.GeocodeOptions()
{
Filters = new ObservableCollection<BingMapGeoCodeService.FilterBase>()
{
new BingMapGeoCodeService.ConfidenceFilter() { MinimumConfidence = BingMapGeoCodeService.Confidence.High}
}
};
request.Credentials = ( ...my credentials... )
request.Address = new BingMapGeoCodeService.Address()
{
AddressLine = String.IsNullOrEmpty(address) ? null : address.Trim(),
Locality = String.IsNullOrEmpty(city) ? null : city.Trim(),
PostalCode = String.IsNullOrEmpty(zipCode) ? null : zipCode.Trim()
};
...现在我必须以这种方式发送我的异步请求:
geocodeServiceClient.GeocodeAsync(request);
一切正常,但我有一个小问题(当然有很多解决方法......但我想以最好的方式做到这一点!):我想在我的请求中发送一个额外的参数(在在我的情况下,它只是一个Guid
标识符,但也可以是一个String
值!)当我从服务器获得响应时我会使用它(我需要它进行另一次内部检查):
private void geocodeServiceClient_GeocodeCompleted(object sender, BingMapGeoCodeService.GeocodeCompletedEventArgs e)
{
// HERE I WANT TO GET BACK MY VALUE, TO CHECK IT!
var geoResult = (from r in e.Result.Results
orderby (int)r.Confidence ascending
select r).FirstOrDefault();
... some more logic here ...
}
我四处搜索,但也因为(在我看来)缺乏文档,我发现了该GeocodeAsync()
方法的这个附加参数:
geocodeServiceClient.GeocodeAsync(request, userState);
我可以将此参数用作我的请求的自定义附加参数吗?
将额外参数传递给第三方服务是否正确?
万一这样做不好:这个重载的含义和用法是什么?
为什么这么称呼它(我的意思是userState)?
非常感谢您!