Certo, questo è ancora meglio.Originariamente inviato da francesco.muia
Di solito io preferisco creare una classe astratta Player in cui vado ad esporre l'interfaccia generica che un ipotetico giocatore deve avere. [...]
In questo modo limiti l'uso della reflection
Se la conoscenza che il "plug-in" ha della applicazione è nei termini di "devo implementare una interfaccia o estendere una certa classe (non importa ora se astratta o no) fornita dalla applicazione" e al contrario la conoscenza che la applicazione ha del plug-in è nei termini di "ho scoperto (come, ora non importa) un nome di classe, creo una istanza e la uso vedendola attraverso il tipo base", allora riduce l'uso della reflection e permette di disaccoppiare applicazione e plug-in.