如果我理解你的問題正確的話,你要刪除的<MyMessage>
元素和對郵件正文中的字符串本身。那麼,消息合約不適合你。您可以刪除消息合約的外部包裝,但不能刪除個別成員的包裝。
你可以做的是根據你創建的BodyWriter
實例創建一個Message
對象,並且這個主體寫入器可以以任何想要的形式寫出輸出XML。有關示例,請參閱下面的代碼。
public class StackOverflow_7010654
{
[MessageContract(IsWrapped = false)]
public class MyMC
{
[MessageBodyMember]
public string MyMessage { get; set; }
}
public static void Test()
{
TypedMessageConverter tmc = TypedMessageConverter.Create(typeof(MyMC), "Action");
Message msg = tmc.ToMessage(new MyMC { MyMessage = "some string" }, MessageVersion.Soap11);
Console.WriteLine(msg); // message with the <MyMessage> element
Console.WriteLine();
msg = Message.CreateMessage(MessageVersion.Soap11, "Action", new MyBodyWriter());
Console.WriteLine(msg); // message without the <MyMessage> element
}
public class MyBodyWriter : BodyWriter
{
public MyBodyWriter() : base(true) { }
protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
writer.WriteString("some string");
}
}
}
你能澄清你想要什麼(即,用一些例子替換...)嗎?例如,是否要將消息看起來像這樣某些字符串 ? –
carlosfigueira