title: How to check if an object is serializable in C#
body: <p>I am looking for an easy way to check if an object in C# is serializable.</p>
  
  <p>As we know you make an object serializable by either implementing the <em>ISerializable</em> interface or by placing the <em>[Serializable]</em> at the top of the class.</p>
  
  <p>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 <em>is</em> statement.</p>
  
  <p>Using @Flard's suggestion this is the code that I have come up with, scream is there is a better way.</p>
  
  <pre><code>private static bool IsSerializable(T obj)
  {
      return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
  }
  </code></pre>
  
  <p>Or even better just get the type of the object and then use the IsSerializable property on the type:</p>
  
  <pre><code>typeof(T).IsSerializable
  </code></pre>
  
  <p>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.</p>