Przeglądaj źródła

The IEnumerable<RemoteFileInfo> returned by Session.EnumerateRemoteFiles implements the interface implicitly to allow access to the interface method (GetEnumerator) from late-bound languages, like PowerShell

See https://stackoverflow.com/q/66779416/850848

(cherry picked from commit 4ae7181819b7b353389f763a3b7589fb3665c550)

Source commit: 38a06bedc5a69829b25aa794b1095891f6b34b6a
Martin Prikryl 4 lat temu
rodzic
commit
993913c9e1
2 zmienionych plików z 26 dodań i 1 usunięć
  1. 1 1
      dotnet/Session.cs
  2. 25 0
      dotnet/internal/ImplicitEnumerable.cs

+ 1 - 1
dotnet/Session.cs

@@ -665,7 +665,7 @@ namespace WinSCP
 
                 Regex regex = MaskToRegex(mask);
 
-                return DoEnumerateRemoteFiles(path, regex, options, true);
+                return new ImplicitEnumerable<RemoteFileInfo>(DoEnumerateRemoteFiles(path, regex, options, true));
             }
         }
 

+ 25 - 0
dotnet/internal/ImplicitEnumerable.cs

@@ -0,0 +1,25 @@
+using System.Collections;
+using System.Collections.Generic;
+
+namespace WinSCP
+{
+    internal class ImplicitEnumerable<T> : IEnumerable<T>
+    {
+        private readonly IEnumerable<T> _enumerable;
+
+        public ImplicitEnumerable(IEnumerable<T> enumerable)
+        {
+            _enumerable = enumerable;
+        }
+
+        public IEnumerator<T> GetEnumerator()
+        {
+            return _enumerable.GetEnumerator();
+        }
+
+        IEnumerator IEnumerable.GetEnumerator()
+        {
+            return GetEnumerator();
+        }
+    }
+}