fork(1) download
  1. using System;
  2.  
  3. public class Test
  4. {
  5. public static void Main()
  6. {
  7. var type = typeof(abc);
  8. object instanceToModify = new abc();
  9.  
  10. var typeToCreate = typeof(GenericClass<>).MakeGenericType(type);
  11. var methodToCall = typeToCreate.GetMethod("GenericMethod");
  12.  
  13. var genericClassInstance = Activator.CreateInstance(typeToCreate);
  14. methodToCall.Invoke(genericClassInstance, new[] { instanceToModify });
  15.  
  16. Console.WriteLine(((abc)instanceToModify).a);
  17. Console.WriteLine(((abc)instanceToModify).b);
  18. Console.WriteLine(((abc)instanceToModify).c);
  19. }
  20. }
  21.  
  22. public class GenericClass<T>
  23. {
  24. public T GenericMethod(T obj)
  25. {
  26. // modify the object in some (arbitrary) way
  27. var fields = obj.GetType().GetFields();
  28. foreach (var field in fields)
  29. {
  30. if (field.FieldType == typeof(string))
  31. {
  32. field.SetValue(obj, "This field's string value was modified");
  33. }
  34. }
  35.  
  36. return obj;
  37. }
  38. }
  39.  
  40. public class abc
  41. {
  42. public string a;
  43. public string b;
  44. public int c;
  45. }
Success #stdin #stdout 0.01s 131648KB
stdin
Standard input is empty
stdout
This field's string value was modified
This field's string value was modified
0