使用GetType将对象数组转换为另一个数组

时间:2018-02-19 08:51:40

标签: c# class types casting

我有Object[] array1,我只知道元素类型

Type t = MyClass;

如何获得动态基本类型的数组,如typeof(MyClass[])

编辑:

我找到了:

Type type = ReferenceTypeComponent.GetReferenceObjectType(tItem);
Array destinationArray = Array.CreateInstance(type, oList.Length);
Array.Copy(oList, destinationArray, oList.Length);

2 个答案:

答案 0 :(得分:0)

你可以使用List<>然后使用Linq进行类型转换。

List<Object> ListOfObjects = MyListOfObject; // Which contains List<Objects>
List<Type> parsedList = ListOfObjects.Cast<Type>().ToList();

编辑:以下是一个关于如何在不了解班级类型时创建通用函数的示例

public static List<T> GetList<T>(int anyParameters)
{
    var results = new List<T>();
 var item = Activator.CreateInstance<T>();// Item here is the type of T
// DO whatever processing is to be done on Item.
    results.Add(item);
}

答案 1 :(得分:0)

  

如何获得动态基类型的数组?

数组的基本类型为object[]。期。你可以放任何东西。您可以在索引1上放置string,在索引1上放置一个int。当然,您可以遍历所有值并获取其类型,但应尽可能防止这种情况。

如果您不想以不可靠的方式行事,则必须使用类型化的列表类型,例如MyType[]List<MyType>