Write-To-File プロシージャにパラメーターを追加したくありませんStreamWriter
が、使い捨ての StreamWriter を使用しようとすると、次のようになります。
An unhandled exception of type 'System.ObjectDisposedException' occurred in mscorlib.dll
Additional information: Cannot write to a closed TextWriter.
コード:
let fileLogger = {
new IFlog with
member i.FLog level format =
use file = LogFile()
Printf.kfprintf
(fun f ->
fprintfn file "[%s][%A] "
<| level.ToString()
<| DateTime.Now
) file (format)
FLog メソッドを 2 回呼び出すと、これが得られます。
私はそれをこのように使用できます:member i.FLog file level format
トップレベルで使い捨てオブジェクトを制御しますが、すべての抽象化を失います.
そのような使い捨てオブジェクトを使用する方法はありますか? または、使い捨てのパラメーターをこの関数に渡さないようにアーキテクチャを変更するにはどうすればよいですか?
ログファイルは次のとおりです。
let mutable LogFileName = "F.log"
let LogFile() =
match File.Exists(LogFileName) with
| false -> File.CreateText(LogFileName)
| true -> File.AppendText(LogFileName)