Castle.Facilities.WcfIntegration.Tests.WcfClientFixture.CanLazilyResolveClientAssociatedWithChannelUsingSuppliedEndpoint C# (CSharp) Method

CanLazilyResolveClientAssociatedWithChannelUsingSuppliedEndpoint() private method

		public void CanLazilyResolveClientAssociatedWithChannelUsingSuppliedEndpoint()
		{
			using (new WindsorContainer()
				.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
				.Register(Component.For<Operations>()
					.DependsOn(new { number = 28 })
					.AsWcfService(new DefaultServiceModel()
						.AddEndpoints(WcfEndpoint.ForContract<IOperations>()
							.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
							.At("net.tcp://localhost/Operations2")
							)
				)))
			{
				using (var clientContainer = new WindsorContainer()
					.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero))
				{
					var client1 = new WeakReference(clientContainer.Resolve<IOperations>("operations",
						new { Endpoint = WcfEndpoint.At("net.tcp://localhost/Operations2") }));
					var client2 = clientContainer.Resolve<IOperations>("operations",
						new { Endpoint = WcfEndpoint.At("net.tcp://localhost/Operations2") });

					Assert.AreEqual(28, ((IOperations)client1.Target).GetValueFromConstructor());
					Assert.AreEqual(28, client2.GetValueFromConstructor());
					clientContainer.Release(client1.Target);
					clientContainer.Release(client2);
					System.GC.Collect();
					Assert.IsFalse(client1.IsAlive);
				}
			}
		}
WcfClientFixture