Windows Phoneアプリケーションでは、さまざまなプロバイダーの複数のWebサービスを利用しています。xamlのデータをバインドするために、すべてをルール化するクラスがあります。まあ言ってみれば :
public class Event
{
public string Id { get;set;}
public string Title { get;set;}
public string Latitude { get;set;}
public string Longitude { get;set;}
}
プロバイダーに1つのWebサービスがある場合、次のような方法を使用します。
private List<Event> MigrateCompanyEventToEvent(DataServiceCollection<CompanyEvent> collection)
{
var listEvents = new List<Event>();
foreach(var item in collection)
{
var ev = new Event();
ev.Id = item.itemId.ToString(); //typeof Guid();
ev.Title = item.companyEventTitle;
if(item.latitude != null) { ev.Latitude = item.latitude.ToString(); } //typeof double?
//etc.
listEvents.Add(ev);
}
return listEvents;
}
しかし...私には多くの同様のWebサービスを提供するプロバイダーがあります。それぞれにメソッドを書きたくないので、ジェネリックメソッドを調べました。わからないと思います。
KidEvents、ParentalEvents、SingleEventsという名前のWebサービスがあります...すべて同じ定義です。だから、私はインターフェースを書きました:
public interface IdataEvents<T>
{
Guid entity_id {get;}
string nameEvent {get;}
double? latitude {get;}
double? longitude {get;}
}
そして先に進むために私は書いた:
private List<Event> MigrateGenericOdataToEvent<T>(DataServiceCollection<T> collection) where T:IdataEvents<T>
{
var listEvents = new List<Event>();
foreach(T item in collection)
{
var ev = new Event();
ev.Title = item.nameEvent;
ev.Id = item.entity_id;
//etc.
listEvents.Add(ev);
}
return listEvents
}
私の問題は、私が使用するときです:var SingleEvents = MigrateGenericOdataToEvent(collection); //コレクションタイプのDataServiceCollectionを使用
エラーが発生します:
Le type 'm3.ServiceReferenceData.SingleEvents' ne peut pas être utilisé
comme paramètre de type 'T' dans le type ou la méthode générique
'm3.ViewModels.MainViewModel.MigrateGenericOdataToEvent<T>
(System.Data.Services.Client.DataServiceCollection<T)'.
Il n'y a pas de conversion de référence implicite de
'm3.ServiceReferenceData.SingleEvents' en
'm3.ViewModels.IdataEvents<m3.ServiceReferenceData.SingleEvents>'.
申し訳ありませんが、フランス語です...それは次のような意味です:
The type 'm3.ServiceReferenceData.SingleEvents' can not be used as a paramater
of type 'T' in the type or generic method
'm3.ViewModels.MainViewModel.MigrateGenericOdataToEvent<T>
(System.Data.Services.Client.DataServiceCollection<T)'.
There is no implicit conversion reference of 'm3.ServiceReferenceData.SingleEvents'
in 'm3.ViewModels.IdataEvents<m3.ServiceReferenceData.SingleEvents>'
SingleEvents、ParentalEvents、KidEvents(すべて同じデータモデル)から1つの汎用イベントにデータを解析することは可能ですか?そして、どうすればそれを行うことができますか?
どうもありがとうございます