对于某些单元测试,我需要在关闭后能够读取 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
方法,但在那之后抛出了一个错误。