public AddressesContainer(AddressesContainer <T> container) { lock (container) { foreach (EndpointAddress address in container) { EndpointAddress addressCopy = new EndpointAddress(address.Uri.AbsoluteUri); Dictionary[addressCopy] = CloneCollection(container[address]); } } }
public AddressesContainer(AddressesContainer <T> container) { Dictionary = new Dictionary <EndpointAddress, Uri[]>(); if (container == null) { return; } lock (container) { foreach (EndpointAddress address in container) { EndpointAddress addressCopy = new EndpointAddress(address.Uri.AbsoluteUri); Dictionary[addressCopy] = CloneCollection(container[address]); } } }
public static Dictionary <EndpointAddress, Uri[]> FindUnion(AddressesContainer <T> container1, AddressesContainer <T> container2) { lock (container1) lock (container2) { Dictionary <EndpointAddress, Uri[]> union = new Dictionary <EndpointAddress, Uri[]>(); foreach (EndpointAddress address in container1) { union[new EndpointAddress(address.Uri.AbsoluteUri)] = CloneCollection(container1.Dictionary[address]); } string[] addresses = union.Keys.Select((address) => address.Uri.AbsoluteUri).ToArray(); foreach (EndpointAddress address in container2) { if (addresses.Contains(address.Uri.AbsoluteUri) == false) { union[new EndpointAddress(address.Uri.AbsoluteUri)] = CloneCollection(container2.Dictionary[address]); } } return(union); } }