DirectoryCatalog.LoadedFiles每行都不行

问题描述 投票:0回答:1

我目前正在尝试使用一行foreach将所有DirectoryCatalog的加载文件输出到控制台

代码:

DirectoryCatalog catalog = new DirectoryCatalog(".");

Array.ForEach(catalog.LoadedFiles, x => Console.WriteLine(x));

将出现以下错误:

无法从用法中推断出方法的类型参数。尝试明确指定类型参数。

我尝试类似的事情(使用显式转换指定类型参数):

Array.ForEach((ReadOnlyCollection<string>)catalog.LoadedFiles, x => Console.WriteLine(x));

它仍然不起作用

注意:

此代码正常工作:

 foreach (var loadedFile in catalog.LoadedFiles)
 {
       Console.WriteLine(loadedFile);
 }

有什么想法吗?

c# mef
1个回答
0
投票

DirectoryCatalog.LoadedFiles属性返回文件的ReadOnlyCollection,它不是隐式数组。在此,ForEach<T>方法需要一个具有T类型元素的数组(单维)。在这种情况下,您首先需要在将其读取之前将ReadOnlyCollection转换为数组。您可以在ReadOnlyCollection上执行扩展方法,先将其转换为数组,然后再申请ForEach<T>

var files= DirectoryCatalog.LoadedFiles.ToArray();

或者,您可以在ReadOnlyCollection上使用CopyTo方法>

string[] files= new string[theObject.TheProperty.Count];
DirectoryCatalog.LoadedFiles.CopyTo(files, 0);
© www.soinside.com 2019 - 2024. All rights reserved.