我尝试实现将ArrayList对象转换为List的扩展方法。我提到this。
namespace MyProjects.Extensions
{
static class ArrayListExtensions
{
/// <summary>
/// ArrayList => List<T>
/// </summary>
/// <remarks>
/// Based on http://www.dotnetperls.com/convert-arraylist-list
/// </remarks>
public static List<T> ToListCollection<T>(this ArrayList arrayList)
{
List<T> list = new List<T>(arrayList.Count);
foreach (T instance in arrayList)
{
list.Add(instance);
}
return list;
}
}
}
当我尝试使用它时,我确保添加了using MyProjects.Extensions
子句但仍然无法识别。有什么想法吗?
ArrayList arrTest = Settings.Default["ListA"] as ArrayList;
arrTest.ToListCollection<MyCustomObject>();
答案 0 :(得分:5)
制作您的扩展程序集public
并尝试。如果它在不同的命名空间中,则当前项目无法访问它。默认情况下,如果没有访问修饰符,则指定的类为internal
。
做这样的事情
namespace MyProjects.Extensions
{
public static class ArrayListExtensions
{
/// <summary>
/// ArrayList => List<T>
/// </summary>
/// <remarks>
/// Based on http://www.dotnetperls.com/convert-arraylist-list
/// </remarks>
public static List<T> ToListCollection<T>(this ArrayList arrayList)
{
List<T> list = new List<T>(arrayList.Count);
foreach (T instance in arrayList)
{
list.Add(instance);
}
return list;
}
}
}
注意:引用的网站有一个演示,其中扩展类在与消费者相同的命名空间中定义。
或者,您可以使用arrayList.Cast<T>().ToList()
(来自Jon Skeet'的评论)。
希望这会对你有所帮助。