Bing GeocodeService userState用作自定义附加参数

时间:2012-08-29 10:48:19

标签: windows-phone-7 request parameter-passing geocode bing-maps

在我的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 )?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我终于找到了自己的方式:userState参数就是我要搜索的内容。

关注有关WCF服务的问题: http://www.c-sharpcorner.com/uploadfile/prvn_131971/chapter-33-advanced-web-services/