Die dynamische und Reflexion alle gut funktionieren - aber mit einem Nachteil auf die Leistung - und verlieren starke Typisierung, Code-Design/Klarheit usw.
also sollten Sie immer Dinge versuchen und zu lösen w/o es - wenn Sie können, Ihr Code ermöglicht es ...
So, und (Anmerkung) abhängig (sehr viel) auf Ihrem spezifischen Code, Bedürfnisse,
Sie könnten auch einen 'Trick' zu 'schließen' die Art verwenden und machen es generische ...
class Program
{
static void Main(string[] args)
{
string something = "Apple";
int test = 5;
var list = something.GetList();
var listint = test.GetList();
Console.WriteLine(list.GetType());
}
}
static class Extension
{
public static List<T> GetList<T>(this T value)
{
return new[] { value }.ToList();
}
}
... d.h. Wenn Sie einen Wert für eine Variable haben und bevor Sie den generischen Kontext eingeben,
können Sie Erweiterungen verwenden (die sehr hilfreich dabei sind), und lassen Sie den Typ und einen List-Typ für Sie ableiten
HINWEIS: Dieses 'Umgehen' wird leider nicht immer ausgeführt und wenn Ihr Code 'zu dynamisch' ist (ich weiß, das ist nicht zu 'genau', aber außerhalb des Rahmens dafür) und wenn es von den reflektionsinduzierten Typen etc. abhängt.
dh es gibt keine saubere Lösung, dies ist nur ein Beispiel, Sie müssten etwas ins Schwitzen bringen :) um es für Sie arbeiten zu lassen - zB Sie können hier und da einen Wrapper-Typ benötigen, und offensichtlich ist das Erstellen einer Liste auf diese Weise möglicherweise nicht das, was Sie wollen usw.
Sie müssen dafür Reflektion verwenden. Sie können statisch typisierte Variablen nicht verwenden. Oder finde einen anderen Ansatz. –
Warum möchten Sie das tun? – svick
"Ich möchte die Sicherheit, aber ich brauche dynamische Sicherheit." Können Sie das näher ausführen? –