C #의 개체가 직렬화 가능한지 확인하는 쉬운 방법을 찾고 있습니다.
우리가 알고 있듯이 ISerializable 인터페이스 를 구현 하거나 클래스 맨 위에 [Serializable] 을 배치하여 객체를 직렬화 할 수 있습니다.
내가 찾고있는 것은 속성을 얻기 위해 클래스를 반영하지 않고도 이것을 확인하는 빠른 방법입니다. 인터페이스는 is 문을 사용하면 빠릅니다 .
@Flard의 제안을 사용하면 이것이 내가 생각해 낸 코드이며 더 나은 방법이 있다는 비명을 지 릅니다.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
또는 개체의 형식을 가져온 다음 형식에 IsSerializable 속성을 사용하는 것이 더 좋습니다.
typeof(T).IsSerializable
이것은 클래스에 다른 클래스가 포함되어있는 경우에만 처리하는 클래스로만 보이지만 모두 확인하거나 @pb가 지적한대로 오류를 시도하고 직렬화하고 기다릴 수 있습니다.