Mam problem pobierania danych z klasy serialized C# array z python. Mam dwa pliki zawierające te klasy. Pierwszy jestem w stanie zapętlić tablicę i pobrać zmienne publiczne. Jednak w drugim pliku widzę klasę, ale nie mam dostępu do żadnej ze zmiennych. Minęło ponad 10 lat, odkąd użyłem C# i uderzałem głową o komputer. Jedyną różnicą jaką widzę jest plik1.bin używa String gdzie plik2.bin używa łańcucha. Wszelkie wskazówki byłyby przydatne.python otwórz zserializowany plik C#
ironpython używany do odczytu plików .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 - (uproszczony) tablica Resident - mają dostęp do danych
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 (uproszczony) Array Resident informacji nie ma dostępu do danych
namespace Rancho_Resident
{
[Serializable]
class ResidentInfo
{
public ResidentInfo()
{
}
public string unit;
public string space;
}
}
aktualizacja
Po przyjrzeniu się bliżej wydaje się, że jeden clas s jest publiczne, a drugie jest wewnętrzne. Jednak nie jestem pewien, jak uzyskać dostęp do wewnętrznej klasy.
Fun problemem :) String i łańcuch są takie ta sama rzecz. Myślę, że jest bardziej prawdopodobne, że różne wersje .Net i ta serializacja wygląda teraz nieco inaczej – Leon
Zauważyłem, że plik1.bin jest klasą publiczną, gdzie plik2 nie jest. Czy to może być problem? – briarfox
, więc czy teraz problem polega na tym, że w ogóle nie możesz serializować klasy? – Leon