En C#, necesito poder crear una matriz de objetos Type en tiempo de ejecución en función de una lista delimitada por comas de tipos de datos pasados a una función como una cadena. Básicamente, esto es lo que estoy tratando de lograr:Cree dinámicamente una matriz de Tipo en C#
// create array of types
Type[] paramTypes = { typeof(uint), typeof(string), typeof(string), typeof(uint) };
Pero tengo que ser capaz de llamar a mi función como esta:
MyFunction("uint, string, string, uint");
y haga que sea generar la matriz dinámica en función de la cadena pasada in. Aquí estaba mi primer intento:
void MyFunction(string dataTypes)
{
//out or in parameters of your function.
char[] charSeparators = new char[] {',', ' '};
string[] types = dataTypes.Split(charSeparators,
stringSplitOptions.RemoveEmptyEntries);
// create a list of data types for each argument
List<Type> listTypes = new List<Type>();
foreach (string t in types)
{
listTypes.Add(Type.GetType(t));
}
// convert the list to an array
Type [] paramTypes = listTypes.ToArray<Type>();
}
Este código simplemente crea una matriz de objetos nulos de tipo System.Type. Estoy bastante seguro de que el problema está aquí:
listTypes.Add(Type.GetType(t));
Sugerencias sobre por qué esta sintaxis no funciona?
Puede encontrar esta tabla de alias C# útil para una instrucción 'switch' o similar. http://msdn.microsoft.com/en-us/library/ya5y69ds.aspx – Ani
Además del issuename-issue, considere utilizar la versión sobrecargada de 'Type.GetType' que ignora el caso. –