Merge branch 'master' of github.com:mono/mono
[mono.git] / mcs / class / System.ServiceModel / System.ServiceModel.Channels / PeerCustomResolverBindingElement.cs
index d69f5c8c2f444567381ef6b44e89db83881f8c95..19cf3eaa6fecc1d64639197dded3d543e697aeea 100755 (executable)
@@ -44,8 +44,7 @@ namespace System.ServiceModel.Channels
                        settings = new PeerCustomResolverSettings ();
                }
 
-               private PeerCustomResolverBindingElement (
-                       PeerCustomResolverBindingElement other)
+               public PeerCustomResolverBindingElement (PeerCustomResolverBindingElement other)
                        : base (other)
                {
                        ReferralPolicy = other.ReferralPolicy;
@@ -66,9 +65,24 @@ namespace System.ServiceModel.Channels
                BindingContext context;
                PeerCustomResolverSettings settings;
 
+               public EndpointAddress Address {
+                       get { return settings.Address; }
+                       set { settings.Address = value; }
+               }
+
+               public Binding Binding {
+                       get { return settings.Binding; }
+                       set { settings.Binding = value; }
+               }
+
                [MonoTODO]
                public override PeerReferralPolicy ReferralPolicy { get; set; }
 
+               public override bool CanBuildChannelFactory<TChannel> (BindingContext context)
+               {
+                       return context.CanBuildInnerChannelFactory<TChannel> ();
+               }
+
                public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
                        BindingContext context)
                {
@@ -79,6 +93,11 @@ namespace System.ServiceModel.Channels
                        return cf;
                }
 
+               public override bool CanBuildChannelListener<TChannel> (BindingContext context)
+               {
+                       return context.CanBuildInnerChannelListener<TChannel> ();
+               }
+
                public override IChannelListener<TChannel>
                        BuildChannelListener<TChannel> (
                        BindingContext context)
@@ -123,6 +142,8 @@ namespace System.ServiceModel.Channels
 
                public PeerCustomResolver (ServiceEndpoint endpoint)
                {
+                       if (endpoint == null)
+                               throw new ArgumentNullException ("endpoint");
                        client = new ChannelFactory<ICustomPeerResolverClient> (endpoint).CreateChannel ();
                }