Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if an object is serializable in C#

I am looking for an easy way to check if an object in C# is serializable.

As we know you make an object serializable by either implementing the ISerializable interface or by placing the [Serializable] at the top of the class.

What I am looking for is a quick way to check this without having to reflect the class to get it's attributes. The interface would be quick using an is statement.

Using @Flard's suggestion this is the code that I have come up with, scream is there is a better way.

private static bool IsSerializable(T obj) {     return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute)))); } 

Or even better just get the type of the object and then use the IsSerializable property on the type:

typeof(T).IsSerializable 

Remember though this this seems to only just the class that we are dealing with if the class contains other classes you probably want to check them all or try and serialize and wait for errors as @pb pointed out.

like image 924
FryHard Avatar asked Sep 17 '08 10:09

FryHard


People also ask

How do you check if an object is serializable?

You can determine whether an object is serializable at run time by retrieving the value of the IsSerializable property of a Type object that represents that object's type.

How do you check if a class is serializable?

If you are curious to know if a Java Standard Class is serializable or not, check the documentation for the class. The test is simple: If the class implements java. io. Serializable, then it is serializable; otherwise, it's not.

Is object serializable C#?

Serialization in C# is the process of converting an object into a stream of bytes to store the object to memory, a database, or a file. Its main purpose is to save the state of an object in order to be able to recreate it when needed. The reverse process is called deserialization.

Is an object serializable?

To serialize an object means to convert its state to a byte stream so way that the byte stream can be reverted back into a copy of the object. A Java object is serializable if its class or any of its superclasses implements either the java.


1 Answers

You have a lovely property on the Type class called IsSerializable.

like image 175
leppie Avatar answered Sep 23 '22 20:09

leppie