FryHard FryHard - 10 days ago 8
C# Question

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.

Answer

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

Comments