During deserialization, the [nonserialized] field is initialized.

Source: Internet
Author: User

We know that we can add the serializable attribute to serialize and deserialize objects. It is usually used to store and transmit objects. For example

[Serializable]
Class shoppingcartitem
{
Public int productid;
Public decimal price;
Public int quantity;
Public decimal total;
Public shoppingcartitem (INT _ productid, decimal _ price, int _ quantity)
{
Productid = _ productid;
Price = _ price;
Quantity = _ quantity;
Total = price * quantity;
}
}

But sometimes, we do not need to serialize all the members (it is a waste of storage space and increases the transmission pressure), so we can use

[Nonserialized] To identify attributes and methods. For example

 

[Serializable]
Class shoppingcartitem
{
Public int productid;
Public decimal price;
Public int quantity;
[Nonserialized]
Public decimal total;
Public shoppingcartitem (INT _ productid, decimal _ price, int _ quantity)
{
Productid = _ productid;
Price = _ price;
Quantity = _ quantity;
Total = price * quantity;
}
}

 

If so, total will not be serialized, but will not be initialized during the deserialization process. But what if we want to get the result of total in the deserialization object? Then we need

The ideserializationcallback interface and implements the ideserializationcallback. ondeserialization method. For example

[Serializable]
Class shoppingcartitem: ideserializationcallback {
Public int productid;
Public decimal price;
Public int quantity;
[Nonserialized] public decimal total;
Public shoppingcartitem (INT _ productid, decimal _ price, int _ quantity)
{
Productid = _ productid;
Price = _ price;
Quantity = _ quantity;
Total = price * quantity;
}
Void ideserializationcallback. ondeserialization (Object sender)
{
// After deserialization, calculate the total
Total = price * quantity;
}
}

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.