The following code makes the trick:
private void test()
{
Type tDict = Type.GetType("System.Collections.Generic.Dictionary`2[System.Int32, System.String]").GetGenericTypeDefinition();
var tDict3 = tDict.MakeGenericType(typeof(string), typeof(string));
var tDict2 = tDict.MakeGenericType(typeof(int), typeof(string));
}