Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





problemas convirtiendo un codigo c a c#

Iniciado por MrK, 04 de Abril de 2010, 01:44:38 PM

« anterior - próximo »

MrK

Hola!

despues de mucho tiempo resistiendome (al final microsoft siempre acaba podiendo conmigo  >.<  ) he decidido aprender c# y portar algunos jueguecitos viejos a c# para aprender.

Normalmente en C usaba un formato de fichero parecido al XML que ya tengo implementado el lector/escritor, y ahora solo me falta la funcion para meter todos los datos en su sitio. Por poner un ejemplo en C, yo tenia esta estructura

Código (c) [Seleccionar]

struct MyStruct
{
    float x;
    float y;
    int position;
};


A traves de una herramienta me generaba estos datos:
Código (c) [Seleccionar]

KmlLoadStruct dataToLoad[]= {

    {"posX",offsetof (MyStruct,posX), TYPE_FLOAT},
    {"posY",offsetof (MyStruct,posY), TYPE_FLOAT},
    {"position",offsetof (MyStruct,position),TYPE_INTEGER}

};



La instruccion offsetof es una instruccion un poco oscura del C que te dice el offset de una variable dentro de un objeto. De esta forma, tenia una funcion de 'loadObject' (muy simplificada en el ejemplo) que consistia en

Código (c) [Seleccionar]

void loadObject (KmlLoadStruct  *dataToLoad, uchar *objectToLoad)
{
    if (dataType==TYPE_INTEGER) *(int *)(objectToLoad + dataOffset) = readIntValue("variableName");
    if (dataType==TYPE_FLOAT) *(float *)(objectToLoad + dataOffset) = readFloatValue("variableName");
bla bla bla

(esto para todos los elementos del array)
}



con la que automaticamente a partir de la definicion de una estructura, podia guardar y leer un objeto sin muchos dolores de cabeza.



Cual seria la forma correcta de hacer algo parecido a esto en c#? Porque que obviamente el offsetof no debe existir...



p.d. No puedo pasar los a XML, mi religion me lo impide ^_^

Vicente

Si puedes usar XML (no entiendo lo que pones al final), lo suyo es que uses para leer y escribir la serialización en XML (http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx).

Si no quieres usar serialización, lo que hacías antes lo puedes seguir haciendo (más o menos) usando la clase System.Type a golpe de llamadas a GetProperty para obtener las propiedades y luego SetValue para asignarlas.

Un saludo!

Vicente

MrK

gracias, voy a ver que puedo sacar de eso  :)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.