diff --git a/UnitTests/CSharpRunner/TempFile.cs b/UnitTests/CSharpRunner/TempFile.cs
index fd93c0a7..a5241fc5 100644
--- a/UnitTests/CSharpRunner/TempFile.cs
+++ b/UnitTests/CSharpRunner/TempFile.cs
@@ -4,27 +4,60 @@ using static Vanara.PInvoke.Kernel32;
namespace Vanara.PInvoke.Tests
{
+ /// Creates a unique temporary file in the %APPDATA%\Temp folder and deletes it when disposed.
+ ///
public class TempFile : IDisposable
{
+ /// The default value inserted into the file if not overridden by constructor parameter.
public const string tmpstr = @"Temporary";
- public TempFile(Kernel32.FileAccess dwDesiredAccess, FileShare dwShareMode, FileMode dwCreationDisposition = FileMode.OpenOrCreate, FileFlagsAndAttributes dwFlagsAndAttributes = FileFlagsAndAttributes.FILE_ATTRIBUTE_NORMAL) : this()
- {
+ /// Initializes a new instance of the class and retrieves a handle to the file.
+ /// The desired access.
+ /// The share mode.
+ /// The creation disposition.
+ /// The flags and attributes.
+ public TempFile(Kernel32.FileAccess dwDesiredAccess, FileShare dwShareMode, FileMode dwCreationDisposition = FileMode.OpenOrCreate,
+ FileFlagsAndAttributes dwFlagsAndAttributes = FileFlagsAndAttributes.FILE_ATTRIBUTE_NORMAL) : this(string.Empty) =>
hFile = CreateFile(FullName, dwDesiredAccess, dwShareMode, null, dwCreationDisposition, dwFlagsAndAttributes, IntPtr.Zero);
- }
+ /// Initializes a new instance of the class with the specified contents.
+ ///
+ /// The text inserted into the file. If this value is , the file is not created on disk.
+ ///
public TempFile(string contents = tmpstr)
{
FullName = Path.GetTempFileName();
if (contents is null)
File.Delete(FullName);
- else
+ else if (contents != string.Empty)
File.WriteAllText(FullName, contents);
}
+ /// Initializes a new instance of the class with the specified extension and contents.
+ /// The file extension.
+ ///
+ /// The text inserted into the file. If this value is , the file is not created on disk.
+ ///
+ public TempFile(string ext, string contents = tmpstr)
+ {
+ FullName = Path.Combine(Path.GetTempPath(), $"tmp{Guid.NewGuid():N}.{ext.TrimStart('.')}");
+ if (contents is not null)
+ File.WriteAllText(FullName, contents);
+ }
+
+ /// Gets the full path of the temporary file.
+ /// The full path of the temporary file.
public string FullName { get; }
+
+ ///
+ /// Gets the file handle if created with the constructor.
+ ///
+ /// The file handle.
public SafeHFILE hFile { get; }
+ /// Releases unmanaged and - optionally - managed resources.
+ ///
void IDisposable.Dispose()
{
hFile?.Dispose();