private void AddPackageReferenceWithValidation(MsBuildProject project, PackageReference packageReference, Action <PackageReference> addPackageReference) { Action action = _packageReferenceConflictChecker.CheckForConflict(project, packageReference) switch { PackageReferenceConflictResult.NoExisting _ => () => addPackageReference(packageReference), PackageReferenceConflictResult.ExistingIsIncompatible result => () => throw new ConflictingPackageReferenceException(packageReference, result.Version), PackageReferenceConflictResult.ExistingIsCompatible _ => Functional.NoOperation, var result => throw new InvalidOperationException($"Enum variant {result.GetType().Name} is not supported"), }; action(); }
private static void AddPackageReferences(MsBuildProject packagesProject, IEnumerable <PackageReference> packageReferences) { var itemGroup = packagesProject.GetItemGroupWithItemOfTypeOrCreateNew(PackageReferenceTypeTag); foreach (var packageReference in packageReferences) { Action action = CheckForConflict(packagesProject, packageReference) switch { PackageReferenceConflictResult.NoExisting _ => () => AddPackageReference(itemGroup, packageReference), PackageReferenceConflictResult.ExistingIsCompatible _ => Functional.NoOperation, PackageReferenceConflictResult.ExistingIsIncompatible result => throw new ConflictingPackageReferenceException(packageReference, result.Version), var result => throw new InvalidOperationException($"Enum variant {result.GetType().Name} is not supported"), }; action(); } }