private TValue GetValue(IMyKey <TId, TName> key)
 {
     foreach (var myObject in values)
     {
         if (myObject.MyKey.Id.Equals(key.Id) && myObject.MyKey.Name.Equals(key.Name))
         {
             return(myObject.Value);
         }
     }
     return(default(TValue));
 }
 public bool ContainsKey(IMyKey <TId, TName> key)
 {
     foreach (var myObject in values)
     {
         if (myObject.MyKey.Equals(key))
         {
             return(true);
         }
     }
     return(false);
 }
 private Boolean SetValue(IMyKey <TId, TName> key, TValue value)
 {
     foreach (var item in values)
     {
         if (item.MyKey.Id.Equals(key.Id) && item.MyKey.Name.Equals(key.Name))
         {
             item.Value = value;
             return(true);
         }
     }
     return(false);
 }
        public TValue this[IMyKey <TId, TName> key]
        {
            get
            {
                return(GetValue(key));
            }

            set
            {
                SetValue(key, value);
            }
        }
 public bool Remove(IMyKey <TId, TName> key)
 {
     foreach (var myObject in values)
     {
         if (myObject.MyKey.Id.Equals(key.Id) &&
             myObject.MyKey.Name.Equals(key.Name))
         {
             values.Remove(myObject);
             return(true);
         }
     }
     return(false);
 }
 public bool TryGetValue(IMyKey <TId, TName> key, out TValue value)
 {
     foreach (var myObject in values)
     {
         if (myObject.MyKey.Id.Equals(key.Id) &&
             myObject.MyKey.Name.Equals(key.Name))
         {
             value = myObject.Value;
             return(true);
         }
     }
     value = default(TValue);
     return(false);
 }
 public void Add(IMyKey <TId, TName> key, TValue value)
 {
     values.Add(new MyObject <TId, TName, TValue>(key.Id, key.Name, value));
 }