在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Object Serialization using C# By omkamal. How to serialize custom created class objects using C# C# Popularity: 7.67. Rating: 4.37 out of 5. IntroductionWriting crucial data to the disk as TEXT is always dangerous. Any anonymous user can open the text file and easily read your data. With Object Serialization, you can reduce this danger to a certain extent. You can write any complex object directly to a filestream without converting values of individual properties into a text. You can make the data written, to the disk, atleast not human readable. In order for the users to read your data files, they have to use your program. Like a File Open command which you may provide in your application. .NET and Object SerializationNow what does .NET framework provide us to do Serialization of Custom-build class objects? With the advent of any programming language, developers would first look whether it is an OOPL. If so, how to create my own classes with my own properties and functions. And then comes inheritance and all others. Explaining how to create user-defined classes is out of scope of this article. But along the way you will get to know about what a user-defined class is. Serialization explainedSerialization is the process of converting complex objects into stream of bytes for storage. Deserialization is its reverse process, that is unpacking stream of bytes to their original form. The namespace which is used to read and write files is Here are the following steps that we are going to do to create a serializable class and test it.
Defining Employee class and propertiesOur custom class Employee should be derived from the using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace MyObjSerial { [Serializable()] //Set this attribute to all the classes that want to serialize public class Employee : ISerializable //derive your class from ISerializable { public int EmpId; public string EmpName; //Default constructor public Employee() { EmpId = 0; EmpName = null; } } } Define Serialization functionsNow we need two functions: One to say how to serialize Employee objects and another to say how to deserialize them. For serialization we override the One of the important parameters is the //Deserialization constructor. public Employee(SerializationInfo info, StreamingContext ctxt) { //Get the values from info and assign them to the appropriate properties EmpId = (int)info.GetValue("EmployeeId", typeof(int)); EmpName = (String)info.GetValue("EmployeeName", typeof(string)); } //Serialization function. public void GetObjectData(SerializationInfo info, StreamingContext ctxt) { //You can use any custom name for your name-value pair. But make sure you // read the values with the same name. For ex:- If you write EmpId as "EmployeeId" // then you should read the same with "EmployeeId" info.AddValue("EmployeeId", EmpId); info.AddValue("EmployeeName", EmpName); } Thats it. You have created your own class which is now serializable. Now lets see how to write an instance of Employee to a special file with a custom .osl extension. And we also see how to read back Employee object from the file. Create a main class and instantiate our Employee classFollowing is the code snippet for ObjSerial class which holds our application's main entry point. //Main class public class ObjSerial { public static void Main(String[] args) { //Create a new Employee object Employee mp = new Employee(); mp.EmpId = 10; mp.EmpName = "Omkumar"; //Add code below for serialization } } Serialize the object to a sample fileFor serializing, lets open a stream object and give a sample file name EmployeeInfo.osl. Note, the demo exe file has this same name. So when you run ObjSerial.exe, the EmployeeInfo.osl file will be created under the folder where you copied the exe file. Add the following code to our // Open a file and serialize the object into it in binary format. // EmployeeInfo.osl is the file that we are creating. // Note:- you can give any extension you want for your file // If you use custom extensions, then the user will now // that the file is associated with your program. Stream stream = File.Open("EmployeeInfo.osl", FileMode.Create); BinaryFormatter bformatter = new BinaryFormatter(); Console.WriteLine("Writing Employee Information"); bformatter.Serialize(stream, mp); stream.Close(); Deserialize the values by reading it from the fileNow we read the created file and cast the return value to our Employee class for further usage. For reading we again create a //Clear mp for further usage. mp = null; //Open the file written above and read values from it. stream = File.Open("EmployeeInfo.osl", FileMode.Open); bformatter = new BinaryFormatter(); Console.WriteLine("Reading Employee Information"); mp = (Employee)bformatter.Deserialize(stream); stream.Close(); Console.WriteLine("Employee Id: {0}",mp.EmpId.ToString()); Console.WriteLine("Employee Name: {0}",mp.EmpName); ConclusionThis sample application explains the core part of serialization only. Actually you can do a lot with the objects while serializing and deserializing. Now you can create a Mulitple document application with .NET Windows Forms and go ahead Serialize the world into your disk. About omkamalStarted programming with computers in 1995. Ever since it keeps me busy and creative. Did a bachelor's degree in electronics and communication only to better understand the inside of computers and its power. Currently working as a software developer in US and looking for a girl-friend... Click here to view omkamal's online profile. Source: Object Serialization using C# - The Code Project - C# Programming |
请发表评论