Dynamisch erstellen Sie ein array-Typ in C#

In C#, ich muss in der Lage sein zu erstellen, die ein array von Type-Objekten, die zur Laufzeit basierend auf einer Komma-getrennte Liste von Datentypen übergeben, in einer Funktion als string. Im Grunde, hier ist, was ich versuche zu erreichen:

//create array of types
Type[] paramTypes = { typeof(uint), typeof(string), typeof(string), typeof(uint) };

Aber ich muss in der Lage sein, rufe meine Funktion wie folgt:

MyFunction("uint, string, string, uint");

und generieren Sie das array dynamisch basierend auf den übergebenen string. Hier war mein Erster Versuch:

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>();

}

Dieser code erstellt einfach ein array von null Objekten des Typs " System.Typ. Ich bin mir ziemlich sicher, das problem liegt hier:

listTypes.Add(Type.GetType(t));

Vorschläge auf, warum diese syntax wird nicht den trick tun?

  • Sie finden diese C# - alias-Tabelle nützlich für einen switch Anweisung oder ähnliches. msdn.microsoft.com/en-us/library/ya5y69ds.aspx
  • Zusätzlich zu den assemblyname-Problem, sollten Sie die überladene version von Type.GetType ignoriert, dass der Fall ist.
InformationsquelleAutor acordner | 2011-01-15
Schreibe einen Kommentar