Diciamo che ho un'interfaccia simile:Tipo vincoli sulle implementazioni dei membri generiche di interfacce non generici in C#
interface IAwesome
{
T DoSomething<T>();
}
C'è un modo per implementare il metodo DoSomething con tipo di vincolo? Ovviamente, questo non funzionerà:
class IncrediblyAwesome<T> : IAwesome where T : PonyFactoryFactoryFacade
{
public T DoSomething()
{
throw new NotImplementedException();
}
}
Questo ovviamente non funzionerà perché questo DoSomething() non sarà soddisfare pienamente il contratto di IAwesome - funziona solo per un sottoinsieme di tutti i possibili valori del parametro type T. C'è un modo per ottenere questo lavoro a corto di alcuni "casting black magic" (che è quello che farò come ultima risorsa se la risposta è no)?
Onestamente, non penso sia possibile ma mi chiedo cosa ne pensate voi ragazzi.
EDIT: L'interfaccia in questione è System.Linq.IQueryProvider quindi non posso modificare l'interfaccia stessa.
Sì, è quello che temevo. –
Hai usato "T" per indicare tre cose diverse ma strettamente correlate in questo codice. Questo è molto confuso; puoi farne nominare qualcos'altro? –
Sì, mi dispiace, il copia-incolla è malvagio ... Risolto - grazie per il suggerimento. ;) – Lucero