SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: AlejandroRe en Viernes 22 de Junio de 2007, 15:29

Título: Conocer .net
Publicado por: AlejandroRe en Viernes 22 de Junio de 2007, 15:29
La pregunta que voy a hacer quizás no tenga sentido y no se pueda hacer, pero es una
idea que se me ocurre.
Se podría en C# implementar una clase que tenga X cantidad de propiedades, pero una que
sea por defecto(por llamarlo de una manera), que si no se especifica el nombre de
ninguna propiedad que coja esa. voy a poner un ejemplo de lo que quiero decir.
supongamos que tengo la siguiente clase con sus propiedades.

clase MiClase
{
   int numero;
   string cadena;

   public Numero
   {
      //codigo
   }  
   
   public string Cadena
   {
      //Codigo
   }
}

De alguna manera declarar la propiedad Cadena por defecto y después poder hacer cosas con estas.

MiClase obj = new MiClase();
//Si no se especifica ninguna propiedad cojo Cadena
obj = "Una Cadena";

Quizás exista algún atributo que me permita hacer esto.
Título: Re: Conocer .net
Publicado por: Neopro en Viernes 22 de Junio de 2007, 16:03
No entendi bien la pregunta....
Título: Re: Conocer .net
Publicado por: AlejandroRe en Viernes 22 de Junio de 2007, 16:52
vomos a poner mas directamente que es lo que yo quiero.
Quiro implemtar una clase que lo único que tenga es un String y que a ese string le aplique ciertos formatos por ejemplo eliminarle los espacios imnecesarios, los que están al inicio, alfinal y entre palabras dejar un solo espacio.
Como esa clase lo único que va a tener es una propiedad lograr que esa clase se comporte como un string normal.
Y entonces poder hacer cosas como estas.

//De esta forma crearía mi objeto...
MiCadena Cad = "  una   cadena   ";
//Luego si imprimo esa cadena la pondría sin los espacios.
Console.WriteLine(Cad);
//imprimiría "una cadena"
Título: Re: Conocer .net
Publicado por: Neopro en Viernes 22 de Junio de 2007, 17:08
Si se puede, debes crear la clase, y decirle que te retorne las modificaciones.

Que la clase se encargue de todo lo que necesitas que realice, puede ser una funcion, una clase, etc....
Título: Re: Conocer .net
Publicado por: AlejandroRe en Viernes 22 de Junio de 2007, 17:19
Me podrías poner un ejemplo parecido al que puse anteriormente....
Título: Re: Conocer .net
Publicado por: Neopro en Viernes 22 de Junio de 2007, 17:52
En un nuevo archivo .cs creas la clase.

La llamas asi (no es necesario):

Código: Text
  1. nombre_clase.MiCadena Cad = new nombre_clase.MiCadena();
  2.  

Luego debes crear la funcion mi cadena que reciba un valor y devuelva el resultado en otra archivo.cs, form, o clase:

Código: Text
  1. public string MiCadena (string cadena)
  2. {
  3. string cadena_resultante;
  4.  
  5. //Acá que saque lo que sobra
  6.  
  7. return cadena_resultante;
  8. }
  9.  

Luego asignas la cadena al resultado, aunque no es necesario el primer paso para llamarla, eso es en el caso de que quieras que se ejecute la funcion.

Código: Text
  1. string resultado = nombre_clase.MiCadena(" una cadena ");
  2.  

Es lo que entiendo que quieres hacer.

Suerte.
Título: Re: Conocer .net
Publicado por: AlejandroRe en Viernes 22 de Junio de 2007, 19:01
Hace como dos días estaba con este problema pero no sabia como podía preguntar lo que quería. Después de hacer el primer post a este foro se me ocurrio que se podría resolver el problema con la sobrecarga de operadores, y busque esto en el google y me salio esta página www.elguille.info/NET/cursoCSharpErik/E ... rega12.htm (http://www.elguille.info/NET/cursoCSharpErik/Entrega12/Entrega12.htm) ahí viene un ejemplo de una clase Metros y otra Centimetros que me vienen de anillo al dedo.

No obstante muchas gracias por tu ayuda. :lol:

no pongo el link porque no me lo permite
Título: Re: Conocer .net
Publicado por: Neopro en Viernes 22 de Junio de 2007, 20:29
Ok.
Título: Re: Conocer .net
Publicado por: JuanK en Sábado 23 de Junio de 2007, 16:57
Si, en efecto l manera de hacerlo es sobrecargando el operador 'cast' de la clase, sin embargo hasta ese punto de devolver una propiedad 'por defecto' no es muy bueno hacerlo pues pareceriera que quieres usar a C# como si fuera vb 6.0.  :scream:  y eso complicara la legibilidad de tu codigo incluso para ti mismo en el futuro.