コード例 #1
0
ファイル: AddressesContainer.cs プロジェクト: SinaC/TetriNET
 public AddressesContainer(AddressesContainer <T> container)
 {
     lock (container)
     {
         foreach (EndpointAddress address in container)
         {
             EndpointAddress addressCopy = new EndpointAddress(address.Uri.AbsoluteUri);
             Dictionary[addressCopy] = CloneCollection(container[address]);
         }
     }
 }
コード例 #2
0
        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]);
                }
            }
        }
コード例 #3
0
        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);
                }
        }