protected internal override object Read(ContentReader input, object existingInstance) { T obj; if (existingInstance != null) { obj = (T)existingInstance; } else { obj = _constructor == null ? Activator.CreateInstance <T>() : (T)_constructor.Invoke(null); } if (_baseTypeReader != null) { _baseTypeReader.Read(input, obj); } var boxed = (object)obj; // Box the type once. foreach (var reader in _readers) { reader.Invoke(input, boxed); } return(obj); }