2016-04-19 29 views
0

Ich habe ein seltsames Problem. Arbeiten in C# Skript mit SSIS Ich habe eine Notwendigkeit entwickelt, eine Liste basierend auf dynamischen Daten zu erstellen.C# Dynamische Liste Klasse

Hintergrund

es zu erklären, ist ein Skript-Task gefeuert, die eine variable API URL hat, dies geht aus und zieht einen JSON-String zurück und wirft sie dann in eine stark typisierte Liste die folgende using Code.

Die Klasse, die dies tut, ist langatmig und wird im Zusammenhang mit diesem Problem nicht wirklich benötigt. ApplicationOneDataSet ist eine stark typisierte Übereinstimmung mit einem der möglichen JSON-Ergebnisse, die von get_APIData zurückgegeben werden.

Jetzt habe ich eine Notwendigkeit ApplicationOneDataSet zu ApplicationTwoDataSet dynamisch basierend auf ändern, auf dem API-URL ich an das Skript übergeben.

Also was ich getan habe, ist durch eine zweite Variable an das Skript namens Klassenname senden, die die Zeichenfolge "ApplicationDataSetOne" oder "ApplicationDataSetTwo" basierend auf welchen Kontext ich es unter nennen enthält.

Die Frage

Meine Frage ist, wie kann ich diese Zeile dynamisch variieren:

var listobject = get_APIData<ApplicationOneDataSet>(url) 

Mit dem String-Variable in das Skript übergeben.

Mein ursprüngliches Denken war etwas entlang der Linien von dieser:

var ClassType = (string) Dts.Variables["AppClassName"].Value; 
Type type = Type.GetType(ClassType); 
var listobject = get_APIData<type>(url) 

Obwohl es nicht zu mögen scheint. Irgendwelche Tipps wären toll!

Antwort

0

Solange es genau zwei Typen gibt, die Sie verwenden können und Sie sie zur Kompilierzeit kennen, würde ich nicht weiter als eine einfache if suchen. Es funktioniert, es ist einfach, jeder versteht es.

Sie können tun es völlig dynamisch zur Laufzeit, aber das ist ein großer Schmerz in der ... wo Sie es nicht wollen. Wenn Sie wirklich in dieses Kaninchenloch gehen wollen, finden Sie weitere Informationen here.

+0

Ich mag Ihre Lösung, in der Dev der würde es tun, aber schließlich müsste es vollständig dynamisch basierend auf der Klasse sein. Ich habe etwas zu lesen, danke für die Ressourcen. – Caz1224

0

Ich bin mir nicht sicher, ob ich vollständig verstanden habe, was Sie zu tun versuchen, aber wie wäre es mit einer Schnittstelle ApplicationDataSet zu schreiben und dann eine Liste davon zu machen? Auf diese Weise kann Ihre Liste beide Arten von Daten enthalten.