2010-05-14 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Fri, 14 May 2010 16:32:10 +0000 (16:32 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Fri, 14 May 2010 16:32:10 +0000 (16:32 -0000)
        * ChannelFactoryBase.cs, RequestChannelBase.cs : support
          MessageVersion in GetProperty<T>() for many transport channels.

svn path=/trunk/mcs/; revision=157367

mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChangeLog
mcs/class/System.ServiceModel/System.ServiceModel.Channels/ChannelFactoryBase.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/RequestChannelBase.cs

index d8a8686ca31bacf7e6d0f346023dc4f9b0703cbe..f283945178c114f0d1d6471526ecc496186eec03 100755 (executable)
@@ -1,3 +1,8 @@
+2010-05-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * ChannelFactoryBase.cs, RequestChannelBase.cs : support
+         MessageVersion in GetProperty<T>() for many transport channels.
+
 2010-05-14  Atsushi Enomoto  <atsushi@ximian.com>
 
        * HttpChannelFactory.cs
index 8d187174e47f2314a695a1fba3383f12594c461f..38bb51a0a8e745cf2c5a27d20e8892d2bb2d379f 100644 (file)
@@ -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)
                {
index 764deac7cbb3b76ad7d502cc123238409cdad20f..216f8d6e09965fe1b106b3da7ca0a520bbb89dcb 100644 (file)
@@ -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> ();