فهرست منبع

2010-05-14 Atsushi Enomoto <[email protected]>

        * ChannelFactoryBase.cs, RequestChannelBase.cs : support
          MessageVersion in GetProperty<T>() for many transport channels.


svn path=/trunk/mcs/; revision=157367
Atsushi Eno 15 سال پیش
والد
کامیت
eef30ecabf

+ 5 - 0
mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog

@@ -1,3 +1,8 @@
+2010-05-14  Atsushi Enomoto  <[email protected]>
+
+	* ChannelFactoryBase.cs, RequestChannelBase.cs : support
+	  MessageVersion in GetProperty<T>() for many transport channels.
+
 2010-05-14  Atsushi Enomoto  <[email protected]>
 
 	* HttpChannelFactory.cs

+ 6 - 1
mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChannelFactoryBase.cs

@@ -34,7 +34,12 @@ using System.ServiceModel.Dispatcher;
 
 namespace System.ServiceModel.Channels
 {
-	internal abstract class TransportChannelFactoryBase<TChannel> : ChannelFactoryBase<TChannel>
+	internal interface IHasMessageEncoder
+	{
+		MessageEncoder MessageEncoder { get; }
+	}
+
+	internal abstract class TransportChannelFactoryBase<TChannel> : ChannelFactoryBase<TChannel>, IHasMessageEncoder
 	{
 		protected TransportChannelFactoryBase (TransportBindingElement source, BindingContext ctx)
 		{

+ 2 - 1
mcs/class/System.ServiceModel/System.ServiceModel.Channels/RequestChannelBase.cs

@@ -68,7 +68,8 @@ namespace System.ServiceModel.Channels
 
 		public override T GetProperty<T> ()
 		{
-			Console.Error.WriteLine (typeof (T));
+			if (typeof (T) == typeof (MessageVersion) && channel_factory is IHasMessageEncoder)
+				return (T) (object) ((IHasMessageEncoder) channel_factory).MessageEncoder.MessageVersion;
 			if (typeof (T) == typeof (IChannelFactory))
 				return (T) (object) channel_factory;
 			return base.GetProperty<T> ();