public Task <ILazinator> Get <TKey>(ILazinator key) where TKey : ILazinator { string stringKey = key.ToString(); if (Storage.ContainsKey(stringKey)) { ReadOnlyMemory <byte> memory = Storage[stringKey]; LazinatorMemory lazinatorMemory = new LazinatorMemory(memory); ILazinator result; result = DeserializationFactory.Instance.CreateFromBytesIncludingID(lazinatorMemory); return(Task.FromResult(result)); } return(Task.FromResult(default(ILazinator))); }
public Task <TValue> Get <TKey, TValue>(ILazinator key) where TKey : ILazinator where TValue : ILazinator { string stringKey = key.ToString(); if (Storage.ContainsKey(stringKey)) { ReadOnlyMemory <byte> memory = Storage[stringKey]; LazinatorMemory lazinatorMemory = new LazinatorMemory(memory); TValue result; try { result = (TValue)DeserializationFactory.Instance.CreateFromBytesIncludingID(lazinatorMemory); } catch (InvalidCastException) { throw new LazinatorDeserializationException($"Item stored at key {key} was not of expected type {typeof(TValue)}."); } return(Task.FromResult(result)); } return(Task.FromResult(default(TValue))); }