Dato il frammento di followin, io piuttosto non capisco PERCHE quello che im intenzione di raggiungere non è possibile:covarianza e controvarianza su Compiti
Interfaccia:
public interface IEntityRepository<out T> : IRepository<IEntity> {
void RequeryDataBase();
IEnumerable<T> Search(string pattern);
Task<IEnumerable<T>> SearchAsync(string pattern);
SearchContext Context { get; }
string BaseTableName { get; }
}
In IRepository<IEntity>
sono solo semplici generiche CRUD definito.
ottengo un errore su questa linea: Task<IEnumerable<T>> SearchAsync(string pattern);
Errore:
method return type must be output safe. invalid variance: the type parameter T must be invariantly valid on Task
Si prega di aiutarmi a capire, perché i cant uso <out T>
con un Task<T>
Penso che il risultato dell'operazione deve essere assegnato al compito, il che rende un '' –
Jim
@Jim ma il tipo di risultato è 'iEnumerable', non solo 'T' .... Inutile pensare che questo dovrebbe funzionare. –
'Task' è una classe quindi è invariabile. –
Lee