gpt4 book ai didi

c# - 将 IList 转换为 SomeType[]

转载 作者:行者123 更新时间:2023-11-30 16:22:37 25 4
gpt4 key购买 nike

我有一个类型为 List 的集合,我想将其转换为 SomeType[]。 SomeType 在运行前是未知的。

这必须通过以下过程的签名来完成。

private object ConvertListToArray(IList  collection)
{
// This does not work since SomeType is not known before runtime.
var convertedList = collection.Cast<SomeType>().ToArray();
return convertedList;
}

注意collection是IList,但是已知具体类型是

     List<SomeType>

返回的集合必须是 SomeType[] 类型的对象。

如何做到这一点?

最佳答案

public static class ListExtensions
{
public static T[] ConvertToArray<T>(IList list)
{
return list.Cast<T>().ToArray();
}

public static object[] ConvertToArrayRuntime(IList list, Type elementType)
{
var convertMethod = typeof(ListExtensions).GetMethod("ConvertToArray", BindingFlags.Static | BindingFlags.Public, null, new [] { typeof(IList)}, null);
var genericMethod = convertMethod.MakeGenericMethod(elementType);
return (object[])genericMethod.Invoke(null, new object[] {list});
}

}
[TestFixture]
public class ExtensionTest
{
[Test]
public void TestThing()
{
IList list = new List<string>();
list.Add("hello");
list.Add("world");

var myArray = ListExtensions.ConvertToArrayRuntime(list, typeof (string));
Assert.IsTrue(myArray is string[]);
}
}

关于c# - 将 IList 转换为 SomeType[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12313672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com