Ecco un esempio molto semplice di ciò che sto cercando di fare. Nella realtà ci sono più relazioni ma non qualcosa di estremo o di memoria pesante.
public class ClassA : ISomething
{
public double property { get; set; }
...
public ClassB classb { get; set; }
}
public class ClassB : ISomething2
{
public double Length { get; set; }
...
}
public class MyProject : BaseProject
{
public IEnumerable<ISomething> ISomethings { get; set; }
...
public IEnumerable<ISomething2> ISomethings2 { get; set; }
...
}
Il problema qui è che devo mantenere un elenco di MyProject
. ISomethings2
e poi classb
proprietà di ClassA per fare riferimento solo a un elemento esistente in MyProject
. ISomethings2
list. La cosa difficile qui è che:
- La rimozione di un elemento da
ISomething2
dovrebbe rimuovere tutti i riferimenti (proprietàclassb
delle istanze ClassA da impostare su null) - Impedisci agli altri sviluppatori di impostare la proprietà
classb
su un oggetto non esistente nell'elenco o su un nuovo oggetto creato dall'utente. - Gli oggetti in
MyProject
.ISomethings2
potrebbero essere aggiunti senza dover fare riferimento da altrove.
Queste classi vengono utilizzate per la descrizione del progetto non per il database . Come quando apri un file di progetto per un'applicazione. Pertanto, la modifica di una proprietà in ClassB dovrebbe essere visibile a tutti poiché è lo stesso riferimento a un oggetto. Esiste uno schema per ottenere ciò che voglio senza molto accoppiamento? Anche progetti / approcci alternativi sono ben accetti.