C sharp - Métodos y propiedades de una clase

 
Vista:

Métodos y propiedades de una clase

Publicado por Ander (2 intervenciones) el 09/12/2016 22:29:52
Buenas, tengo una duda. Estoy implementando en C# Windows Forms una clase para controlar una API y entre muchas propiedades que maneja dicha clase tengo dos (latitud y longitud) que me gustaría poder acceder a ellas desde el form de la siguiente manera:

1
2
3
4
NombreDeLaClase.Latitud  // devolvería un float con la longitud en decimal
NombreDeLaClase.Latitud.EnRadianes  // devolvería un float con la longitud en radianes - Quizá Latitud.EnRadianes()?
NombreDeLaClase.Longitud  // devolvería un float con la longitud en decimal
NombreDeLaClase.Longitud.EnRadianes  // devolvería un float con la longitud en radianes - Quizá Longitud.EnRadianes()?

La duda me surge con el segundo y cuarto caso: ¿es posible "vincular" un método a una propiedad o bien una propiedad a otra propiedad? ¿Esto que intento es posible de otra manera?. Me da que tengo un lío importante con esto de la POO.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Métodos y propiedades de una clase

Publicado por Miguel (160 intervenciones) el 10/12/2016 01:52:55
Sí, se llaman "extensions methods" (https://msdn.microsoft.com/en-us/library/bb383977.aspx). En tu caso sería algo como:

1
2
3
4
5
6
7
8
public static class NumericExtensions
{
        public static float ToRadians(this float val)
        {
            // creo que la operación sería así...
            return  (float)((Math.PI / 180) * val);
        }
}



Saludos,
Miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Métodos y propiedades de una clase

Publicado por Ander (2 intervenciones) el 11/12/2016 10:19:00
Gracias, en realidad esto ya lo había probado pero al ver que cualquier otro float tiene la misma extensión ToRadians no me había parecido acertado. ¿Sería posible crear un tipo de datos nuevo y que fuera derivado de float y extenderlo?.

En cualquier caso, tu solución, Miguel, es la correcta. Gracias por tu tiempo!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 356
Plata
Ha disminuido 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Métodos y propiedades de una clase

Publicado por Miguel (160 intervenciones) el 11/12/2016 11:06:47
Pues sería hacer una extensión pero para la clase, por ejemplo:

1
2
3
4
5
6
7
8
9
public static float LatitudEnRadianes(this tuClase value)
{
   return FloatToRadians(tuClase.Latitud);
}
 
public static float FloatToRadians(float val)
{
    return  (float)((Math.PI / 180) * val);
}



PD: Respondiendo tu pregunta; al menos que tengas acceso a los fuentes se podría como comentas, lo cual sería algo absurdo ya que allí mismo podrías crear tus métodos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar