diff --git a/ClosedXML_Tests/Utils/ResourceFileExtractor.cs b/ClosedXML_Tests/Utils/ResourceFileExtractor.cs index e982ee4..3c9159e 100644 --- a/ClosedXML_Tests/Utils/ResourceFileExtractor.cs +++ b/ClosedXML_Tests/Utils/ResourceFileExtractor.cs @@ -12,11 +12,16 @@ public sealed class ResourceFileExtractor { #region Static + #region Private fields + private static readonly Dictionary ms_defaultExtractors = new Dictionary(); - #endregion + + #endregion Private fields + #region Public properties + /// Instance of resource extractor for executing assembly public static ResourceFileExtractor Instance { @@ -38,19 +43,24 @@ return _return; } } - #endregion - #region Public methods - #endregion - #endregion + + #endregion Public properties + + #endregion Static + #region Private fields + private readonly Assembly m_assembly; private readonly ResourceFileExtractor m_baseExtractor; private readonly string m_assemblyName; private bool m_isStatic; private string m_resourceFilePath; - #endregion + + #endregion Private fields + #region Constructors + /// /// Create instance /// @@ -61,6 +71,7 @@ { m_resourceFilePath = resourceFilePath; } + /// /// Create instance /// @@ -69,6 +80,7 @@ : this(Assembly.GetCallingAssembly(), baseExtractor) { } + /// /// Create instance /// @@ -77,6 +89,7 @@ : this(Assembly.GetCallingAssembly(), resourcePath) { } + /// /// Instance constructor /// @@ -87,6 +100,7 @@ { m_resourceFilePath = resourcePath; } + /// /// Instance constructor /// @@ -94,14 +108,16 @@ : this(Assembly.GetCallingAssembly()) { } + /// /// Instance constructor /// /// public ResourceFileExtractor(Assembly assembly) - : this(assembly ?? Assembly.GetCallingAssembly(), (ResourceFileExtractor) null) + : this(assembly ?? Assembly.GetCallingAssembly(), (ResourceFileExtractor)null) { } + /// /// Instance constructor /// @@ -111,6 +127,7 @@ : this(assembly ?? Assembly.GetCallingAssembly(), false, baseExtractor) { } + /// /// Instance constructor /// @@ -121,31 +138,39 @@ private ResourceFileExtractor(Assembly assembly, bool isStatic, ResourceFileExtractor baseExtractor) { #region Check + if (ReferenceEquals(assembly, null)) { throw new ArgumentNullException("assembly"); } - #endregion + + #endregion Check + m_assembly = assembly; m_baseExtractor = baseExtractor; m_assemblyName = Assembly.GetName().Name; IsStatic = isStatic; m_resourceFilePath = ".Resources."; } - #endregion + + #endregion Constructors + #region Public properties + /// Work assembly public Assembly Assembly { [DebuggerStepThrough] get { return m_assembly; } } + /// Work assembly name public string AssemblyName { [DebuggerStepThrough] get { return m_assemblyName; } } + /// /// Path to read resource files. Example: .Resources.Upgrades. /// @@ -156,6 +181,7 @@ [DebuggerStepThrough] set { m_resourceFilePath = value; } } + public bool IsStatic { [DebuggerStepThrough] @@ -163,6 +189,7 @@ [DebuggerStepThrough] set { m_isStatic = value; } } + public IEnumerable GetFileNames() { string _path = AssemblyName + m_resourceFilePath; @@ -174,8 +201,11 @@ } } } - #endregion + + #endregion Public properties + #region Public methods + public string ReadFileFromRes(string fileName) { Stream _stream = ReadFileFromResToStream(fileName); @@ -208,6 +238,7 @@ ResourceFileExtractor _ext = new ResourceFileExtractor(Assembly, specificPath); return _ext.ReadFileFromRes(fileName); } + /// /// Read file in current assembly by specific file name /// @@ -218,20 +249,28 @@ { string _nameResFile = AssemblyName + m_resourceFilePath + fileName; Stream _stream = Assembly.GetManifestResourceStream(_nameResFile); + #region Not found + if (ReferenceEquals(_stream, null)) { #region Get from base extractor + if (!ReferenceEquals(m_baseExtractor, null)) { return m_baseExtractor.ReadFileFromResToStream(fileName); } - #endregion + + #endregion Get from base extractor + throw new ApplicationException("Can't find resource file " + _nameResFile); } - #endregion + + #endregion Not found + return _stream; } - #endregion + + #endregion Public methods } }