public void Write(T item)
 {
     Init();
     foreach (string name in _Names)
     {
         RegistryAttribute _key = _Keys[name];
         if (!_key.ReadOnly)
         {
             Registry.SetValue(_key.Key, _key.Name, _Properties[name].GetValue(item));
         }
     }
 }
        public T Read()
        {
            Init();
            T _retval = new T();

            foreach (string name in _Names)
            {
                RegistryAttribute _key   = _Keys[name];
                object            _value = Registry.GetValue(_key.Key, _key.Name, _Properties[name].GetValue(_retval));
                bool   _succes;
                object _converted = Convert(_value, _Properties[name].PropertyType, out _succes);
                if (_succes && _value != null)
                {
                    _Properties[name].SetValue(_retval, _converted);
                }
            }
            return(_retval);
        }