Nap*_*Nap 1 generics extension-methods c#-3.0
我试图实现将ArrayList对象转换为List的扩展方法.我提到了这个.
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用它时,我确保我添加了一个using MyProjects.Extensions条款,但它仍然无法识别.有任何想法吗?
ArrayList arrTest = Settings.Default["ListA"] as ArrayList;
arrTest.ToListCollection<MyCustomObject>();
Run Code Online (Sandbox Code Playgroud)
进行扩展课程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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
阅读有关MSDN上的访问修饰符的更多信息.
注意:引用的站点有一个演示,其中扩展类在与消费者相同的命名空间中定义.
或者你可以使用arrayList.Cast<T>().ToList()(来自Jon Skeet的评论).
希望这对你有所帮助.