diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessor.cs index a7342b0d..9cb3a1bc 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessor.cs @@ -47,8 +47,23 @@ namespace UniversalEditor private bool mvarIsOpen = false; public bool IsOpen { get { return mvarIsOpen; } protected set { mvarIsOpen = value; } } - public abstract void Open(); - public abstract void Close(); + public void Open() + { + if (mvarIsOpen) return; + + OpenInternal(); + mvarIsOpen = true; + } + public void Close() + { + if (!mvarIsOpen) return; + + CloseInternal(); + mvarIsOpen = false; + } + + protected abstract void OpenInternal(); + protected abstract void CloseInternal(); private Encoding mvarDefaultEncoding = Encoding.Default; /// diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/FileAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/FileAccessor.cs index 515019e3..9e9442ab 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/FileAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/FileAccessor.cs @@ -88,9 +88,9 @@ namespace UniversalEditor.Accessors public void Open(string FileName) { mvarFileName = FileName; - Open(); + OpenInternal(); } - public override void Open() + protected override void OpenInternal() { System.IO.FileShare share = System.IO.FileShare.Read; System.IO.FileMode mode = System.IO.FileMode.OpenOrCreate; @@ -106,7 +106,7 @@ namespace UniversalEditor.Accessors mvarFileStream = System.IO.File.Open(mvarFileName, mode, access, share); } - public override void Close() + protected override void CloseInternal() { mvarFileStream.Close(); } diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs index 52206bc7..6f2b4346 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/MemoryAccessor.cs @@ -88,14 +88,11 @@ namespace UniversalEditor.Accessors return count; } - public override void Open() + protected override void OpenInternal() { - IsOpen = true; } - - public override void Close() + protected override void CloseInternal() { - IsOpen = false; } } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/StreamAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/StreamAccessor.cs index 7d6f7438..990c958d 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/StreamAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/StreamAccessor.cs @@ -65,14 +65,11 @@ namespace UniversalEditor.Accessors return count; } - public override void Open() + protected override void OpenInternal() { - throw new NotImplementedException(); } - - public override void Close() + protected override void CloseInternal() { - mvarBaseStream.Close(); } } } diff --git a/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs b/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs index 5f79e71e..74b7ff30 100644 --- a/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs +++ b/CSharp/Libraries/UniversalEditor.Core/Accessors/StringAccessor.cs @@ -98,14 +98,11 @@ namespace UniversalEditor.Accessors return count; } - public override void Open() + protected override void OpenInternal() { - IsOpen = true; } - - public override void Close() + protected override void CloseInternal() { - IsOpen = false; } } }