对于某些单元测试,我需要在关闭 MemoryStream
之后读取其内容。由于这不可能,我想要创建一个内存流代理,其中 Close
调用是一个空操作,允许我在代码外部控制尝试关闭它之后仍然从中读取。然而,这不会工作。
REPL
(import [System.IO MemoryStream StreamWriter])
(let [stream (proxy [MemoryStream] [] (Close [] (println "close!")))]
(doto (StreamWriter. stream)
(.Write "testing")
(.Close)))
输出
close!
Execution error (InvalidProgramException) at System.Diagnostics.StackFrame/Write (NO_FILE:0).
Cannot create boxed ByRef-like values.
虽然很明显我的代理 Close
方法被调用,但在之后抛出了错误。