Sto riscontrando un problema nel recuperare i dati da una classe serializzata C# con python. Ho due file contenenti le classi. Il primo sono in grado di eseguire il loop della matrice e di prendere le variabili pubbliche. Comunque nel secondo file vedo la classe ma non riesco ad accedere a nessuna delle variabili. Sono passati più di 10 anni da quando ho usato C# e ho battuto la testa contro il computer. L'unica differenza che posso vedere è file1.bin utilizza String dove file2.bin utilizza una stringa. Qualsiasi suggerimento sarebbe utile.python apre un file C# serializzato
ironpython utilizzato per leggere i file .bin.
from System.Runtime.Serialization.Formatters.Binary import BinaryFormatter
from System.IO import FileStream, FileMode, FileAccess, FileShare
from System.Collections.Generic import *
def read(name):
bformatter = BinaryFormatter()
file_stream = FileStream(name, FileMode.Open, FileAccess.Read, FileShare.Read)
res = bformatter.Deserialize(file_stream)
file_stream.Close()
return res
def write(name,data):
bformatter = BinaryFormatter()
stream = FileStream(name, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)
bformatter.Serialize(stream, data)
stream.Close()
res = read('fiel2.bin')
for space in res:
print dir(space)
File1.bin - (semplificato) serie di Resident - possono accedere ai dati
namespace RanchoCSharp
{
[Serializable]
public class Resident
{
public Resident()
{
}
public Resident(String fName, String lName)
{
firstN = fName;
lastN = lName;
}
//Invoice info
public String firstN;
public String lastN;
}
}
file2.bin (semplificato) Array di Info residente non possono accedere ai dati
namespace Rancho_Resident
{
[Serializable]
class ResidentInfo
{
public ResidentInfo()
{
}
public string unit;
public string space;
}
}
aggiornamento
Dopo aver visto più vicino sembra che un clas s è pubblico e l'altro è interno. Tuttavia, non sono sicuro di come accedere alla classe interna.
Fun problema :) String e la stringa sono la stessa cosa. Penso che sia più probabile che versioni diverse di .Net e quella serializzazione siano leggermente diverse ora – Leon
Ho appena notato che file1.bin è una classe pubblica in cui file2.bin non lo è. Potrebbe essere questo il problema? – briarfox
quindi il problema è ora più lungo sul quale non è possibile serializzare la classe? – Leon