Ho un'applicazione. Questa applicazione utilizza un'interfaccia per accedere al database. Questa interfaccia può essere implementata da molte classi. Ad esempio, si utilizza EF 4.4, ma altre classi possono utilizzare EF5 che è più efficiente. In futuro forse userò EF6 perché usa metodi asincroni. In questo esempio tutti i metodi utilizzano EF, ma forse altre opzioni possono essere utilizzate in altri modi.Interfacce e metodi asincroni
L'applicazione è codificata una volta, utilizzando l'interfaccia e, in base al file di configurazione, utilizzare un'implementazione o l'altra, quindi ho solo bisogno di modificare il codice in un unico posto, il costruttore, per aggiungere la nuova opzione nel istanziazione della classe che è assegnata all'interfaccia.
Al momento tutti i metodi delle classi non sono async
, ma in futuro, se utilizzo EF6, vorrei utilizzare i metodi asincroni, quindi non so se è possibile che la classe che usa EF6 e implementa l'interfaccia può utilizzare i metodi async
.
Per i metodi asincroni di EF6, vorrei utilizzare il modello async/awiat, quindi nel metodo della mia classe ho bisogno di usare l'attributo async. Questo mi permette di usare la parola chiave await
quando chiamo al metodo asincrono di EF6.
Ma questa classe può implementare l'interfaccia che per la prima volta è per i metodi sincroni?
C'è un modo in cui nell'applicazione principale posso utilizzare molte implementazioni senza la necessità di modificare il codice? Alcune implementazioni useranno metodi asincroni mentre altre saranno sincrone.
Ricordare che 'async' non fa parte della firma; un metodo asincrono e un metodo non asincrono possono entrambi implementare lo stesso metodo di interfaccia. – Servy
Non è il metodo che è attendibile, è il tipo (di ritorno). – rism
Troppe spiegazioni per una semplice domanda. A PARER MIO. – Mahmoodvcs