Sprache: C#
Angenommen es wird zu weiteren Verarbeitung ein Dictionary vom Typ Dictionary<Guid, T> benötigt. Damit der Aufruf allerdings komfortabler ist soll es die möglichkeit geben die Daten in Form einer IList<T> an die Methode zu übergeben, dann kann folgendes Snippet helfen
// aufruf
public void testRun()
{
IList<int> var = new List<int>();
TestMethod(var);
}
public void TestMethod(object var)
{
if (var.GetType().IsGenericType)
{
Type[] t = var.GetType().GetGenericArguments();
Type typeToGenerate = typeof(Dictionary<,>);
Type[] tParameters = new Type[] { typeof(Guid), t[0] };
Type newType = typeToGenerate.MakeGenericType(tParameters);
object obj = Activator.CreateInstance(newType);
}
else
{
throw new InvalidCastException("Wrong type");
}
// do something with the new Dictionary...
}
// aufruf
public void testRun()
{
IList<int> var = new List<int>();
TestMethod(var);
}
public void TestMethod(object var)
{
if (var.GetType().IsGenericType)
{
Type[] t = var.GetType().GetGenericArguments();
Type typeToGenerate = typeof(Dictionary<,>);
Type[] tParameters = new Type[] { typeof(Guid), t[0] };
Type newType = typeToGenerate.MakeGenericType(tParameters);
object obj = Activator.CreateInstance(newType);
}
else
{
throw new InvalidCastException("Wrong type");
}
// do something with the new Dictionary...
}
Alte URL:
/snippet/generic-type-creator/773
Ein object als Parameter in einem Generic ist meiner Meinung nach Themaverfehlung …
IList kann man schonmal nicht nach IList
[code](IList list) dict = new Dictionary();
public static void Test
{
Dictionary
}
[/code]
Hallo,
sorry stimmt leute ich korrigiere das Ganze mal zunächst so dass es passt.