public PermaDictionary(IFormatter <K> kSerializer, IFormatter <V> vSerializer, string name, bool allowCaching, FileAccess access = FileAccess.ReadWrite, bool deleteOnDispose = false, FileShare share = FileShare.None, FileMode mode = FileMode.OpenOrCreate, V vvalueIfCreated = default(V)) { this.allowCaching = allowCaching; this.DeleteOnDispose = deleteOnDispose; _kSerializer = kSerializer; _vSerializer = vSerializer; _vvalueIfCreated = vvalueIfCreated; _data = new PermaObject <PermaDictionaryData>(MutateFileName(name, x => "__DICTIONARY_DATA_" + x), deleteOnDispose, access, share, mode, new PermaDictionaryData(0, ""), allowCaching); LoadDictionary(true); }
public T this[string identifier] { get { this.RefreshDefinitions(); return(_dic[identifier].value); } set { this.RefreshDefinitions(); if (identifier.Contains(_defSeperator)) { throw new Exception("cannot create entry with the separator in it"); } if (!_dic.ContainsKey(identifier)) { _dic[identifier] = new PermaObject <T>(_serializer, MutateFileName(name, k => "__DICTIONARYMEMBER_" + identifier + "_" + k), DeleteOnDispose, _definitions.access, _definitions.share, FileMode.Create); _definitions.value += identifier + _defSeperator; } _dic[identifier].value = value; } }
public PermaCollection(IFormatter <T> serializer, string name, bool deleteOnDispose = false, FileAccess access = FileAccess.ReadWrite, FileShare share = FileShare.None, FileMode mode = FileMode.OpenOrCreate) { _int = new PermaLabeledDictionary <T>(serializer, name, null, deleteOnDispose, access, share, mode); _maxname = new PermaObject <long>(Utility.MutateFileName(name, k => "__COLLECTIONMAXINDEX_" + k), deleteOnDispose, access, share, mode); }