Ho il seguente pattern Model:C'è un modo per sovraccaricare i metodi di estensione in C#?
public abstract class PARENTCLASS {...}
public class CHILD_A_CLASS : PARENTCLASS{...}
public static class EXTENSION{
public static METHOD(this PARENTCLASS parent){...}
public static METHOD(this CHILD_A_CLASS child) {...}
}
Qualcosa come sopra, naturalmente ci saranno più bambini (e nipote) le classi, ma ho appena messo uno di loro. Il problema è che, quando ho chiamato il metodo di estensione simile al seguente:
PARENTCLASS cc = new CHILD_A_CLASS();
cc.METHOD();
eseguirà il genitore Metodo di estensione al posto di mia previsto metodo di estensione BAMBINO. Qualcuno ha idea su come implementarlo? (Non sto pensando di inserire METHOD nella classe e lasciarlo ereditare perché voglio mantenere la classe del modello pulita e lontana da altre logiche).
Grazie. Penso che il casting di tipo sarebbe troppo costoso per l'esecuzione e anche piuttosto maldestro per mantenere il codice come questo. Penso che cercherò un metodo alternativo per implementarlo. Il cast di tipo – xandy
è abbastanza veloce, anche se potrebbe essere difficile da mantenere. –
La proposta non è polimorfica, il metodo selezionato è solo corretto per il tipo di riferimento di compilazione e non per il tipo di runtime. Troppo brevemente non è vero che è prioritario - credo che sia una cattiva pratica, perché non funzionerà sempre e porterà solo a incongruenze e aspetto sbagliato e causerà più problemi. Penso che i metodi di estensione siano sbagliati perché nascondono il fatto che questi metodi non vengono inviati dinamicamente. –