소스 검색

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

Source commit: 7f68802de72e0dc9875d6192a30c2b22437ac9e3
Martin Prikryl 4 년 전
부모
커밋
4ae7181819
2개의 변경된 파일26개의 추가작업 그리고 1개의 파일을 삭제
  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);
                 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();
+        }
+    }
+}