usman-net Ответов: 1

Альтернативный метод для обработки файловой системы.функция fileputobject


Hi
I converted vb6 code into C# but facing an error.
Suppose we have Person 
--------------------------------------------
 
public class Person
{
private int intID;
private string strName;
private string strSurname;
public Person()
{
intID = -1;
strName = "";
strSurname = "";
}
public int ID
{
get
{
return intID;
}
set
{
intID = value;
}
}
public string Name
{
get
{
return strName;
}
set
{
strName = value;
}
}
public string Surname
{
get
{
return strSurname;
}
set
{
strSurname = value;
}
}
}
 --------------------------------------------------------------------
I want to write this class into file. I was using 
Person entP = new Person();
entP.ID = 1;
entP.Name= "john";
entP.Surname ="doe";
FileSystem.FileOpen(1, "test_file", OpenMode.Binary);
FileSystem.FilePutObject(1, entP,-1);
FileSystem.FileClose(1);
But it throws an error
Unhandled Exception: System.ArgumentException: File I/O with type 'Person' is not valid.
It seems FilePutObject does not support classes. Is there alternative way to do same task?
Please guide
thanks 


Что я уже пробовал:

Person entP = new Person();
entP.ID = 1;
entP.Name= "john";
entP.Surname ="doe";
FileSystem.FileOpen(1, "test_file", OpenMode.Binary);
FileSystem.FilePutObject(1, entP,-1);
FileSystem.FileClose(1);
But it throws an error
Unhandled Exception: System.ArgumentException: File I/O with type 'Person' is not valid.

Richard MacCutchan

Я подозреваю, что этот метод может обрабатывать только известные классы, содержащие метаданные, которые сообщают методу FilePutObject, что содержит объект. Есть лучшие способы сериализации в C#, и Google найдет вам примеры.

1 Ответов

Рейтинг:
1

OriginalGriff

Я бы не рекомендовал использовать FilePutObject - файлы данных, которые он генерирует, все равно не будут совместимы с файлами, созданными вашим существующим кодом VB6, поэтому вам лучше перейти на более современное хранилище данных, такое как XML или JSON.
JSON очень прост, особенно если вы используете для него один из пакетов с открытым исходным кодом: Json.NET - Newtonsoft[^] это тот, который я использую.