1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| static Type MakeGenericFromName(Type baseType, string genericParamTypeName)
{
AssemblyName[] referencedAssemblies = Assembly.GetExecutingAssembly().GetReferencedAssemblies();
Type genericParamType = null;
foreach(AssemblyName aName in referencedAssemblies)
{
Assembly anAssembly = Assembly.Load(aName);
genericParamType = anAssembly.GetType(genericParamTypeName, false, true);
if(genericParamType != null) // trouvé !
{
return baseType.MakeGenericType(new Type[] { genericParamType });
}
}
return null; // pas trouvé !
}
static void Main(string[] args)
{
Type genericBuildedType = MakeGenericFromName(typeof(List<>), "System.String");
object myInstance = null;
if(genericBuildedType != null)
{
myInstance = Activator.CreateInstance(genericBuildedType);
}
Console.WriteLine("Mon Type {0}", myInstance != null ? myInstance.GetType().Name : " pas créé !");
Console.ReadKey();
} |