DataContractSerialize로 개체를 serialize하는 방법을 모르겠습니다.DataContractSerializer가 작동하지 않는 이유는 무엇입니까?
var sData = SerializerHelper.DataContractSerialize(msg);
그것은 예외가 발생합니다 :이 같은 DataContractSerialize을 실행하면
public static string DataContractSerialize(object target)
{
var formatter = new DataContractSerializer(target.GetType());
using (var stream = new MemoryStream())
{
formatter.WriteObject(stream, target);
stream.Position = 0;
return Encoding.UTF8.GetString(stream.ToArray());
}
}
엔티티
[Serializable, DataContract(Namespace = "CommunicationModel.Entity")]
[KnownType(typeof(Message))]
[KnownType(typeof(int))]
[KnownType(typeof(string))]
[KnownType(typeof(Type))]
[KnownType(typeof(object))]
public class Message : IDisposable
{
public Message(string stringInfo)
{
MessageValue = stringInfo;
MessageType = typeof (string);
}
public Message(int intInfo)
{
MessageValue = intInfo;
MessageType = typeof (int);
}
[DataMember]
public Type MessageType { get; private set; }
[DataMember]
public object MessageValue { get; private set; }
#region Implementation of IDisposable
public void Dispose()
{
}
#endregion
}
: 다음은 내 코드입니다. 내가 무엇을 할 수 있을지?
무슨 예외입니까? – mgnoonan
KnowType이 필요합니다. 데이터 계약 이름이 'RuntimeType : http : //schemas.datacontract.org/2004/07/System'인 'System.RuntimeType'유형이 필요하지 않습니다. KnownTypeAttribute 특성을 사용하거나 DataContractSerializer에 전달 된 알려진 형식 목록에 추가하여 알려진 형식 목록에 정적으로 알지 못하는 형식을 추가합니다. – GeminiYellow