Se ho una classe di dominio con un metodo di istanza Delete()
. Qual è il modo migliore per garantire che eventuali riferimenti avanzi a un'istanza che ha "cancellato sé stesso" siano successivamente inutilizzabili?
Questa domanda è molto simile al mio, ma penso che il PO sia più in generale interessato a come l'API nel suo complesso dovrebbe essere informata delle delezioni che si verificano altrove e reagiscono a tali eliminazioni. Qualsiasi menzione di come dovrebbero comportarsi le istanze cancellate è puramente periferica.
Ad esempio, un punto elenco dice:
If my wrapper object finds out that its unerlying [sic] storage has been deleted (e.g. because of access to an uncached property returned an error), should it now mark itself as Deleted (so that all access to properties and methods return some sort of ObjectDeletedException) or should it just clear all caches and allow future calls to fail naturally.
Sono più interessato a come implementare l'errore che dovrebbe verificarsi quando vengono utilizzate proprietà o metodi dell'istanza eliminata. Posso mettere un controllo del gateway all'interno di ogni proprietà e metodo che genera un'eccezione (come indicato nella citazione sopra), ma ciò creerebbe un codice estremamente fragile da allora ogni sviluppatore futuro - incluso me - dovrebbe ricordare di aggiungere quell'assegno quando si creano nuove proprietà o metodi.
Inoltre, non ritengo che tali verifiche siano sufficienti, in quanto la sola presenza di un riferimento a un oggetto potrebbe essere significativa, indipendentemente dalle sue proprietà o metodi sottostanti. Ad esempio, un client della mia API potrebbe contenere riferimenti a tali istanze che credono esistano e, se uno si è cancellato, quell'istanza non dovrebbe più essere valida e dovrebbe causare ogni sorta di inferno. Forse potrebbe solo generare un evento "NotifyDeleted" e lasciare che sia il cliente a rispondere, ma non sono sicuro che sia sufficiente.