| File: ScriptSourceResolver.cs | Web Access |
| Project: src\roslyn\src\Scripting\Core\Microsoft.CodeAnalysis.Scripting.csproj (Microsoft.CodeAnalysis.Scripting) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using System; using System.Collections.Generic; using System.Collections.Immutable; namespace Microsoft.CodeAnalysis.Scripting { using static ParameterValidationHelpers; public sealed class ScriptSourceResolver : SourceFileResolver, IEquatable<ScriptSourceResolver> { public static new ScriptSourceResolver Default { get; } = new ScriptSourceResolver(ImmutableArray<string>.Empty, null); private ScriptSourceResolver(ImmutableArray<string> sourcePaths, string baseDirectory) : base(sourcePaths, baseDirectory) { } public ScriptSourceResolver WithSearchPaths(params string[] searchPaths) => WithSearchPaths(searchPaths.AsImmutableOrEmpty()); public ScriptSourceResolver WithSearchPaths(IEnumerable<string> searchPaths) => WithSearchPaths(searchPaths.AsImmutableOrEmpty()); public ScriptSourceResolver WithSearchPaths(ImmutableArray<string> searchPaths) { if (SearchPaths == searchPaths) { return this; } return new ScriptSourceResolver(ToImmutableArrayChecked(searchPaths, nameof(searchPaths)), BaseDirectory); } public ScriptSourceResolver WithBaseDirectory(string baseDirectory) { if (BaseDirectory == baseDirectory) { return this; } // absolute path check is done in the base class return new ScriptSourceResolver(SearchPaths, baseDirectory); } public bool Equals(ScriptSourceResolver other) => base.Equals(other); public override int GetHashCode() => base.GetHashCode(); public override bool Equals(object obj) => base.Equals(obj); } }