2012-07-24 1 views

답변

0

여기까지 내가 지금까지 발견했습니다. 더 간단한 방법이 있습니까?

Private Sub ConfirmTypeIsNetDataContractSerializable(type As Type) 
    Dim specialAllowedTypes As Type() = {GetType(Decimal), GetType(String), _ 
    GetType(DateTime), GetType(DateTimeOffset), GetType(TimeSpan), _ 
    GetType(Guid), GetType(Uri), GetType(XmlQualifiedName), GetType(XmlElement), GetType(XmlNode)} 
    If type.IsPrimitive() OrElse specialAllowedTypes.Contains(type) Then Return 

    If type.IsDefined(GetType(DataContractAttribute), inherit:=False) Then Return 
    If type.IsDefined(GetType(SerializableAttribute), inherit:=False) Then Return 
    If type.IsEnum Then Return 
    If type.GetInterfaces().Contains(GetType(IXmlSerializable)) Then Return 

    Dim serializer As New NetDataContractSerializer 
    Using dummyStream As New System.IO.MemoryStream() 
     serializer.Serialize(dummyStream, Activator.CreateInstance(type)) ' throws exception if not serializable 
    End Using 
End Sub