Sto usando una DLL di terze parti API, bloomberg SAPI per coloro che sanno/hanno accesso ad esso.Come può essere nascosto un metodo di smaltimento?
Ecco il mio problema:
[ComVisible(true)]
public interface IDisposable
{ //this is from mscorlib 2.0.0.0 - standard System.IDisposable
void Dispose();
}
public abstract class AbstractSession : IDisposable {}//method signatures and comments
public class Session : AbstractSession {} //method signatures and comments (from assembly metadata)
Tutto quanto sopra è dal F12/Vai al browser definizione/oggetto in VS2010. Ora, quando provo e utilizzando questo codice:
(new Session()).Dispose();
Questo non compila ... errore di compilatore standard - nessun metodo/estensione definizione 'Dispose' stato trovato.
Com'è possibile ??? Hanno creato un assemblaggio e modificato esplicitamente i metadati?
Non so se sia giuridicamente possibile nascondere (a esclusione) un metodo pubblico ....
Aaarrgggh! simpatico. Non avevo mai usato le implementazioni esplicite, quindi non sapevo che fosse necessario un cast di interfaccia per usarlo. Grazie ! – Vivek
L'implementazione di un'interfaccia esplicita di solito non è necessaria, ma ci sono alcune volte quando è bello, come quando vuoi forzare i tuoi colleghi sviluppatori a codificare tramite interfaccia invece di implementazione. E alcune volte quando è necessario, come quando è necessario implementare due interfacce diverse che hanno una firma membro identica, è necessario implementare due modi diversi. –
Sì. Grazie. Come hai detto, raramente hai bisogno di usare l'esplicito a meno che i nomi dei metodi non siano in conflitto, quindi questa è la prima volta che vedo questo nel codice di produzione. Mi chiedo cosa si è scontrato con DISPOSITO! :) – Vivek