在下面的代码中,return语句抛出异常。
private IEnumerable<DirectoryEntry> GetDomains()
{
ICollection<string> domains = new List<string>();
// Querying the current Forest for the domains within.
foreach (Domain d in Forest.GetCurrentForest().Domains)
{
domains.Add(d.Name);
}
return domains; //doesn't work
}
这个问题的可能解决方案是什么?
答案 0 :(得分:3)
将您的方法重新定义为
private IEnumerable<string> GetDomains()
{
...
}
因为您需要的是string
而不是Domains
或DirectoryEntry
的列表。 (假设您正在添加“d.Name”)
此外,使用LINQ会更容易:
IEnumerable<string> domains = Forest.GetCurrentForest().Domains.Select(x => x.Name);
这将返回IEnumerable<string>
,并且不会浪费额外的内存来创建单独的列表。
答案 1 :(得分:0)
将域的类型设置为IList<string>
或者像内森所说的那样:
private IEnumerable<string> GetDomains()
{
return Forest.GetCurrentForest().Domains.Select(x => x.Name);
}
答案 2 :(得分:-1)
ICollection<T>
继承自IEnumerable<T>
,因此您可以将其转换:
public interface ICollection<T> : IEnumerable<T>, IEnumerable