在 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;}
}
当提供商有一个网络服务时,我使用如下方法:
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;
}
但是...我有一个提供许多类似网络服务的提供商。我不想为每个方法编写一个方法,所以我查看了泛型方法。我想我不明白一些事情。
我有一个名为 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(所有相同的数据模型)中的数据解析为一个通用事件?请问我该怎么做?
非常感谢