c# circular dependency

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
eaghezzi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 725
Iscrizione: martedì 21 luglio 2009, 10:27
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.1 LTS i686
Sesso: Maschile
Località: Valleambrosia

c# circular dependency

Messaggio da eaghezzi »

le classi B,C,D estendono la classe A

la classe A ha un metodo statico pubblico factory
che dovrebbe tornare un'istanza delle classi B,C,D a seconda del parametro ricevuto

la variabile newIstance è dichiarata correttamente e non crea problemi

Codice: Seleziona tutto

ClasseA newIstance;
il problema nasce nell'inizializzazione

Codice: Seleziona tutto

switch(type){
  case 'B':
      newIstance = new ClassB();
}
non viene riconosciuto Classb() e nemmeno le altre derivate ClassC ...
se provo ad aggiungere una referenza alle classi derivate
ottengo il messaggio :
adding this project as reference would cause a circular dependency

il che può anche essere ma mi sembra normale.

suggerimenti ?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: c# circular dependency

Messaggio da Zoff »

Io rivedrei le necessità, non è bene che una superclasse istanzi le figlie.
La soluzione piu' ovvia che mi viene in mente è creare una classe factory invece che un metodo nella classe A.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
eaghezzi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 725
Iscrizione: martedì 21 luglio 2009, 10:27
Desktop: Lubuntu
Distribuzione: Ubuntu 14.04.1 LTS i686
Sesso: Maschile
Località: Valleambrosia

Re: c# circular dependency

Messaggio da eaghezzi »

giusto,fatto
anche se non mi piace.

nella mia visione la super classe ha le competenza per decidere quale figlia è appropriata

così facendo deleghiamo un'altra classe solo per istanziare un oggetto di cui non sa null
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: c# circular dependency

Messaggio da Zoff »

eaghezzi [url=http://forum.ubuntu-it.org/viewtopic.php?p=4775218#p4775218][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:nella mia visione la super classe ha le competenza per decidere quale figlia è appropriata
Se ne ha la competenze non dovrebbe essere in un progetto separato, ma in ogni caso non vedo perché una superclasse dovrebbe avere competenza delle figlie.
eaghezzi [url=http://forum.ubuntu-it.org/viewtopic.php?p=4775218#p4775218][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:così facendo deleghiamo un'altra classe solo per istanziare un oggetto di cui non sa null
E' una normalissima implementazione del factory pattern: https://en.wikipedia.org/wiki/Factory_% ... ramming%29
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti