2013-02-16 6 views
2

Я хочу получить тип массива типа во время выполнения. Мне не нужен экземпляр массива, просто введите. В настоящее время я использую метод ниже.Создание типа массива во время выполнения

private Type GetArrayType(Type elementType) 
    { 
     return Array.CreateInstance(elementType, 0).GetType(); 
    } 

Есть ли лучшее решение без создания экземпляра массива?

Примечание: я не могу использовать Type.GetType(elementType.FullName + "[]"), потому что создаю элемент Тип во время выполнения на Reflection.Emit. Согласно MSDN, для сохранения динамической сборки на диске, которую я не хочу делать.

ответ

5

Да, вы можете использовать Type.MakeArrayType.

Возвращает объект Type, представляющий собой одномерный массив текущего типа с нижней границей нуля.

private Type GetArrayType(Type elementType) 
{ 
    return elementType.MakeArrayType(); 
} 
+0

Спасибо! Кажется, мне нужен отдых ... Я не могу сказать, как я потерялся в статических методах Array и Type и никогда не думал о методах экземпляра (: –

+0

Я согласен, что некоторые из вариантов этих типов методов создания экземпляров/статических озадачивает. – Ani

Смежные вопросы