protected override IDictionary Create(object parameter) { var pair = _locator.Get(parameter.GetType()); var result = pair.HasValue ? _dictionaries.Get(pair.Value.KeyType, pair.Value.ValueType)(parameter) : throw new InvalidOperationException($"Could not locate dictionary from type {parameter.GetType()}."); return(result); }
public ISerializer Get(TypeInfo parameter) { var pair = _locator.Get(parameter); var serializers = new[] { Create(Key, pair.KeyType), Create(Value, pair.ValueType) }; var serialization = _builder(serializers); var reader = _contents.Create(Type, new MemberInnerContentHandler(serialization, _contents, _contents)); var converter = new Serializer(reader, new MemberListWriter(serialization)); var result = new Container <object>(_element, converter); return(result); }