Objekt aus MemoryStream erstellen

Cromon

Erfahrenes Mitglied
Hallo zusammen!

Nach stundenlangem Versuchen bin ich mittlerweile sowohl enttäuscht als auch genervt von .NET. Alles was ich versuche ist eine möglichst dynamische Funktion zu erstellen die es ermöglicht aus einem Speicherstrom ein Objekt zu erstellen.

In C++ würde ich das folgendermassen machen:
Code:
template<typename T>
void Read(T& value)
{
      memcpy(&value, m_pBuffer, sizeof(T));
}

In C++/CLI sitze ich nun verzweifelt vor der Umsetzung dessen. Ich hatte schon dutzende Versuche gestartet, alle bisher ohne Erfolg. Bisher sieht das ganze so aus:
Code:
		generic<typename T>
		void Read(T% in)
		{
			Type^ t = T::typeid;
			if(t->Equals(System::String::typeid))
			{
				in = (T)System::Text::Encoding::ASCII->GetString(m_content, m_readPoint, m_content->Length - m_readPoint);
				m_readPoint += ((String^)in)->Length + 1;
			}
			else
			{
			}
		}

Wie kriege ich das nun für alle anderen Typen hin? Der soll einfach sizeof(T) Bytes aus meinem MemoryStream (m_reader) lesen und das übergebene Element damit "befüllen". Ist so etwas wirklich nicht machbar? Wenn ja, dann werde ich wohl wohl oder übel .NET wieder den Rücken kehren müssen, das wäre doch einge mehr als gigantischer Flop.

Gruss
Cromon
 
hab kein VS hier
aber es müsste doch die Methode ReadByte / ReadBytes im MemoryStream geben.
Ansonsten ev. weiter an BinaryReader den Stream geben (sollte aber nicht nötig sein).
 
Hallo zusammen!

Das Thema habe ich jetzt ganz vergessen. Ich habe das jetzt durch Reflection soweit zu meiner Zufriedenheit hergestellt. Es ist zwar nicht ganz gleich wie in C++, aber vertretbar.

Ich verwende einen BitConverter und über Reflection hole ich mir die Properties des Typs. Dadurch kann ich das dann soweit ganz sauber serialisieren.

Den BinaryFormatter habe ich auch schon verwendet, aber entweder ich hab den nicht richtig angewandt oder er macht nicht das, was ich erwarte ;)

Gruss
Cromon
 
Zurück