Ci sono casi in cui un'astrazione dovrebbe ereditare ISerializable?

1

C'è una citazione di @ Mark Seemann da una conversazione in cui si afferma che un'astrazione non deve mai implementa IDisposable :

I like how @nblumhardt put it almost six years ago:

an interface [...] generally shouldn't be disposable. There's no way for the one defining an interface to foresee all possible implementations of it - you can always come up with a disposable implementation of practically any interface.

È applicabile anche all'interfaccia ISerializable (il che significa che un'emulazione non deve mai implementarla)?

    
posta Serhii Shushliapin 09.03.2017 - 13:59
fonte

1 risposta

1

"Un'astrazione" e "un'interfaccia" non sono la stessa cosa. Classi, strutture, metodi e altre cose sono tutte astrazioni. La discussione che citi riguarda specificamente le interfacce.

Le interfacce in .net sono come mixin senza alcuna implementazione (mixin di un povero uomo). Specificano ciò che la classe o la struttura deve in definitiva attuare. Per questo motivo, è necessario ridurre al minimo il numero di membri nell'interfaccia, in modo che sia più facilmente implementato. Ciò significa che devi anche minimizzare l'ereditarietà nella progettazione dell'interfaccia.

Un'interfaccia ereditata da ISerializable significa che tutte le implementazioni dell'interfaccia devono implementare ISerializable. Se i metodi che usano l'interfaccia richiedono ISerializable, oltre ad altre cose, ovviamente ha senso ereditarlo. Ma questa particolare interfaccia è usata raramente.

    
risposta data 09.03.2017 - 18:59
fonte

Leggi altre domande sui tag