Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Confronto tra due classi di oggetti
martedì 09 ottobre 2012 - 10.36
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
VB.NET
anfiteatro
Profilo
| Newbie
9
messaggi | Data Invio:
mar 9 ott 2012 - 10:36
Ciao a tutti,
ho necessità di confrontare se due classi sono diverse ed ovviamente evidenziare le proprietà che differiscono.
Ad esempio, semplificando:
Public Class Persona
Private Nome as String
Private Cognome as String
Provate NumTel as List(Of Recapiti)
...
Public Class Recapiti
Private Tipo as String
Private Num as String
....
Supponiamo di avere due classi Persona istanziate e volessi verificare si tratti della stessa Persona (ovviamente confrontando i dati e non l'Hash della classe) e nel caso evidenziare dove si presentano le differenze. Come dovrei fare?
Tenete conto che non volevo creare da zero una Routine che facesse il controllo, in quanto le tipologie di classi da confrontare sono molte.
Vi spiego il mio intento...
Nel mio modo di sviluppare non considero (e sicuramente sbaglio) l'utilizzo di automatizzazioni intrinseche del Framework, ma preferisco avere il totale controllo dei miei oggetti.
Premesso ciò, sviluppo tutto il mio oggetto dalla BL alla DAL con i metodi opportuni. E vorrei implementare una funzione che il Framework già contempla, ovvero (in una Concorrenza Ottimistica) non loccando i Record del DB vorrei che al momento della scrittura di aggiornamento dell'oggetto sul DB, controllare se, rispetto a quando abbiamo "caricaro in update" un oggetto, questi sia cambiato o meno rispetto al DB.
Spero di essermi spiegato.
E ovviamente come potrete capire, gli oggetti sono dei più disparati e implementando un Metodo di comparazione sarebbe troppo dispendioso.
Attendo i Vostri preziosi consigli. Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 11 ott 2012 - 01:14
>Ciao a tutti,
ciao
>Supponiamo di avere due classi Persona istanziate e volessi verificare
>si tratti della stessa Persona (ovviamente confrontando i dati
>e non l'Hash della classe) e nel caso evidenziare dove si presentano
>le differenze. Come dovrei fare?
per comparare i dati delle due classi secondo me devi overridare la IEquatable:
http://msdn.microsoft.com/en-us/library/ms131187.aspx
http://www.codeproject.com/Articles/20592/Implementing-IEquatable-Properly
>Premesso ciò, sviluppo tutto il mio oggetto dalla BL alla DAL
>con i metodi opportuni. E vorrei implementare una funzione che
>il Framework già contempla, ovvero (in una Concorrenza Ottimistica)
>non loccando i Record del DB vorrei che al momento della scrittura
>di aggiornamento dell'oggetto sul DB, controllare se, rispetto
>a quando abbiamo "caricaro in update" un oggetto, questi sia
>cambiato o meno rispetto al DB.
Per la concorrenza potresti usare anche una logica di timestamp:
1) carico dal db il timestamp di ultima modifica di un record
2) faccio le elaborazioni sull'applicazione
3) quando vado a salvare passo il timestamp che avevo letto
4) su db, se il timestamp è differente, allora qualcuno ha già scritto la modifica, e gestisco il caso
>Spero di essermi spiegato.
>E ovviamente come potrete capire, gli oggetti sono dei più disparati
>e implementando un Metodo di comparazione sarebbe troppo dispendioso.
A me viene solo l'implementazione dell'interfaccia, con cui, per ogni oggetto puoi definire il criterio per l'Equals
Se vuoi puoi anche implementare la IComparable, per il CompareTo.
>Attendo i Vostri preziosi consigli. Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !