Foros del Web » Programación para mayores de 30 ;) » .NET »

Comparación de toda una clase

Estas en el tema de Comparación de toda una clase en el foro de .NET en Foros del Web. Buenas tardes, Estoy haciendo un programa en que recojo datos de dispositivos, los comparo con los valores que se supone que deberían tener, y de ...
  #1 (permalink)  
Antiguo 06/11/2013, 11:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Comparación de toda una clase

Buenas tardes,

Estoy haciendo un programa en que recojo datos de dispositivos, los comparo con los valores que se supone que deberían tener, y de no ser así los actualizo.

Para esto he creado una clase Device que a su vez contiene una clase DeviceConfig (variable configuracion), que a su vez contiene muchas variables para las posibles configuraciones.

Mi intención es la siguiente:

1. Leer el dispositivo y cargar los valores en las variables de una clase DeviceConfig A.
2. Leer la base de datos y cargar los valores en las variables de una clase DeviceConfig del dispositivo B que estoy comprobando.

3. Realizar la comprobación de todas las variables tal que (if A=B.configuracion)

Es esto posible? O estoy dando un enfoque equivocado? De ser así... Veis alguna manera mejor de hacer esta comparación, o de estructurar los datos?

Muchas gracias.
Saludos.
  #2 (permalink)  
Antiguo 06/11/2013, 18:41
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Comparación de toda una clase

a lo que te refieres es a comparar propiedades de los objetos de las respectivas clases no?
  #3 (permalink)  
Antiguo 06/11/2013, 18:46
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: Comparación de toda una clase

si es asi se puede de muchas formas
ya sea propiedad por propiedad, con un foreach (puede ser una lista o un dataset, datatable)
  #4 (permalink)  
Antiguo 07/11/2013, 01:38
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Comparación de toda una clase

Ok, entonces entiendo que no hay ninguna posibilidad que me evite comparar propiedad por propiedad toda la clase, no?

A currar toca pues!

Gracias.
  #5 (permalink)  
Antiguo 07/11/2013, 01:48
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Comparación de toda una clase

Lo que tienes que hacer es que la clase DeviceConfig y Device implementen el interfaz IComparable. De esta forma el código del programa donde uses las clases te quedará mucho más limpio y elegante.
__________________
Aviso: No se resuelven dudas por MP!
  #6 (permalink)  
Antiguo 07/11/2013, 09:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Comparación de toda una clase

Buenas tardes,

gracias por el consejo Malenko.

He comenzado a hacerlo y no sé si me estoy liando o voy en el camino correcto. A ver si me podéis echar una mano.

He creado la clase Device tal que:
Código vb:
Ver original
  1. Public Class Device
  2.     Implements IComparable
  3.     Private _ip As String
  4.     Private _maquina As String
  5.     Private _producto As String
  6.     Private _orden As String
  7.     Private _lote As String
  8.     Private _config As DeviceConfig
  9.  
  10.     Public Overloads Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
  11.         If TypeOf obj Is Device Then
  12.             Dim temp As Device = CType(obj, Device)
  13.  
  14.             Return Me.config.CompareTo(temp.config)
  15.         End If
  16.  
  17.         Throw New ArgumentException("object is not a Device")
  18.     End Function
  19.  
  20. 'GETTERS Y SETTERS No los pongo por ahorrar espacio
  21.  
  22. End Class

La DeviceConfig tal que:
Código vb:
Ver original
  1. Public Class DeviceConfig
  2.     Implements IComparable
  3.     Private _maxNumCodesGlobal As Integer
  4.     Private _maxNumCodesDataMatrix As Integer
  5.     Private _maxNumCodesQR As Integer
  6.     Private _maxNumCodesBarcode As Integer
  7.     Private _partialResults As String
  8.     Private _allowIdenticalSymbols As String
  9.     Private _datamatrixValidation As Integer
  10.     Private _datamatrixValidationType
  11.  
  12.     Public Overloads Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
  13.  
  14.         If TypeOf obj Is DeviceConfig Then
  15.             Dim temp As DeviceConfig = CType(obj, DeviceConfig)
  16.  
  17.             Return Me.CompareTo(temp)
  18.         End If
  19.  
  20.         Throw New ArgumentException("object is not a DeviceConfig")
  21.     End Function
  22. 'GETTERS Y SETTERS No los pongo por ahorrar espacio
  23.  
  24. End Class

Entonces mi intención en el programa es hacer un:
Código vb:
Ver original
  1. Dim a as new Device
  2. 'Modificar alguno de los valores de las propiedades de a.config
  3.  
  4. Dim b as new DeviceConfig
  5. 'Modificar alguno de los valores de las propiedades de b
  6.  
  7. if (a.config.compareTo(b)=0 then
  8. 'SON IGUALES
  9. end if

Esto funcionaría si los valores de las propiedades de las dos clases del tipo DeviceConfig son iguales?

Muchas gracias.

Etiquetas: clases, comparacion, estructura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:15.