בעקבות הפוסט (Constructing an Empty WCF Reply Message) הבנתי שהרבה אנשים רוצים דרך ליצור הודעות בקשה או תשובה בדרך קלה, ללא הצורך לעבוד עם XML.
הדרך לשם מצריכה מאיתנו לקבל מחלקה שמממשת את ההממשק IDispatchOperationFormatter, ומחלקות אלו לא ציבוריות.
לכן דוגמאת קוד איך אפשר לקבל בצורה הפשוטה ביותר מימוש של IDispatchOperationFormatter.
1. צריך גישה ל- OperationDescription של המתודה.
2. צריך גישה ל- DispatchOperation של המתודה.
כלומר הכי קל לכתוב את הקוד בתוך המתודה ApplyDispatchBehavior של הממשק IOperationBehavior. הקוד:
public void ApplyDispatchBehavior ( OperationDescription operationDescription , DispatchOperation dispatchOperation ) { DataContractSerializerOperationBehavior SerializerBehavior = operationDescription.Behaviors .Find<DataContractSerializerOperationBehavior>(); if ( dispatchOperation.Formatter == null ) { ((IOperationBehavior)SerializerBehavior) .ApplyDispatchBehavior ( operationDescription , dispatchOperation ); } IDispatchMessageFormatter innerDispatchFormatter = dispatchOperation.Formatter; // Create Empty Message. Message msg = innerDispatchFormatter .SerializeReply( MessageVersion.Soap12 , new object[]{} , null ); Console.WriteLine ( msg.ToString() ); } |