public void Dispose()
        {
            if (IsDisposed)
            {
                return;
            }

            IsDisposed = true;

            for (int index = 0; index < 20; index++)
            {
                InternalContact[index].Dispose();
            }
            ComponentMediator.Dispose();
        }
        public Contract(BasicTriListWithSmartObject[] devices)
        {
            if (devices == null)
            {
                throw new ArgumentNullException("Devices is null");
            }

            ComponentMediator = new ComponentMediator();

            InternalContact = new List20Items.ListItem.Item[ContactSmartObjectIdMappings.Count];
            for (int index = 0; index < ContactSmartObjectIdMappings.Count; index++)
            {
                InternalContact[index] = new List20Items.ListItem.Item(ComponentMediator, ContactSmartObjectIdMappings[index]);
            }

            for (int index = 0; index < devices.Length; index++)
            {
                AddDevice(devices[index]);
            }
        }