2009-07-15 7 views
0

私は特定のlat/longの近くに "Clinics"のリストを返すWebサービスを持っています。しかし、私の呼び出しWebでは、次のコードでエラーが発生したため、コンパイルできません。Webサービスから返されたListを使用した問題

private static List<Clinic> GetClinicsNearLocation(Coordinate coordinate, int searchDistance) 
{ 

    var wsDental = new ProviderLocation_Dental(); 
    List<Clinic> clinics = wsDental.GetSearchResults(
     coordinate.Latitude, coordinate.Longitude, searchDistance); 
    return clinics; 
} 

エラーが

" 'com.dev.webservices.Clinic []' 型「System.Collections.Generic.List 'com.dev.services.dev.Clinic' を返すために、式の型を変換できません" です

理由は何ですか?ここで

は、Webサービスのメソッドです:

public List<Clinic> GetSearchResults(string latitude, string longitude, int searchDistance) 
{ 

    var results = Clinic.GetClinicsNearLocation(latitude, longitude, searchDistance); 
    return results; 
} 

答えて

5

次のようにWebサービスメソッドが定義されているようだ:

Clinic[] GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance); 

リストに配列を変換したい場合は、あなたが行うことができます以下:

List<Clinic> clinics = new List<Clinic>(wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance)); 

またはToList拡張方法を使用して:

List<Clinic> clinics = wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance).ToList(); 
+0

ありがとうございました。定義があるWebサービスが、こことして配列を返す方法がわからない: 公共一覧 GetSearchResults(文字列の緯度、文字列の経度、INT searchDistance) { VAR結果= Clinic.GetClinicsNearLocation(緯度、経度、searchDistance)。 結果を返します。 } 上記の方法で配列が返される理由は何ですか? –

+1

WSDL仕様にはListというものはありません。これは.NET固有のタイプです。 Javaクライアントがあるとします。 WSDLには配列があります。これは、クライアントプロキシを生成するときにListが自動的に配列に変換されることを意味します。 –

0

戻り値の型はリストではないためです。

試してください:GetSearchResults()を返すので、ほぼ確実

List<Clinic> clinics = new List<Clinic>(wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance)); 
0

wsDental.GetSearchResultsはあなたが行うことができるはず

配列を(クリニック[])戻っています汎用List<Clinic>ではなく、Clinicオブジェクトの配列です。

リストをArray要素で手動で入力するか、IEnumerable<Clinic>(@Darinおよび@McAdenで示すように)を受け入れるコンストラクタオーバーロードを使用する必要があります。

0

を:

private static com.dev.webservices.Clinic[] GetClinicsNearLocation(Coordinate coordinate, int searchDistance) 
{ 
    var wsDental = new ProviderLocation_Dental(); 
    com.dev.webservices.Clinic[] clinics = wsDental.GetSearchResults(coordinate.Latitude, coordinate.Longitude, searchDistance); 
    return clinics; 
} 
2

問題は、お客様のウェブサイトでのサービス参照です。これを試してみてください:

Right click the service in Service References 
    -> Configure Service Reference 
    -> in the Data Type group 
     -> change the Collection type to System.Collections.Generic.List 
     -> ok 

サービスリファレンスとアップデートサービスリファレンスを右クリックしてください。

関連する問題