using System.IO; namespace StardewModdingAPI.Framework.AssemblyRewriting { /// Represents cached metadata for a rewritten assembly. internal class CacheEntry { /********* ** Accessors *********/ /// The MD5 hash for the original assembly. public readonly string Hash; /// The SMAPI version used to rewrite the assembly. public readonly string ApiVersion; /// Whether to use the cached assembly instead of the original assembly. public readonly bool UseCachedAssembly; /********* ** Public methods *********/ /// Construct an instance. /// The MD5 hash for the original assembly. /// The SMAPI version used to rewrite the assembly. /// Whether to use the cached assembly instead of the original assembly. public CacheEntry(string hash, string apiVersion, bool useCachedAssembly) { this.Hash = hash; this.ApiVersion = apiVersion; this.UseCachedAssembly = useCachedAssembly; } /// Get whether the cache entry is up-to-date for the given assembly hash. /// The paths for the cached assembly. /// The MD5 hash of the original assembly. /// The current SMAPI version. public bool IsUpToDate(CachePaths paths, string hash, ISemanticVersion currentVersion) { return hash == this.Hash && this.ApiVersion == currentVersion.ToString() && (!this.UseCachedAssembly || File.Exists(paths.Assembly)); } } }