fork download
  1. using System;
  2. using System.Reflection;
  3.  
  4. public interface IMyInterface
  5. {
  6. void DoSomething();
  7. }
  8.  
  9. public class MyClass<T> : IMyInterface
  10. {
  11. public T Value { get; set; }
  12. public void DoSomething()
  13. {
  14. Console.WriteLine("Did something");
  15. }
  16. }
  17.  
  18. public class Test
  19. {
  20. public static void Main()
  21. {
  22. var testVar = 123;
  23. var genType = typeof(MyClass<>).MakeGenericType(testVar.GetType());
  24. var genInstance = Activator.CreateInstance(genType);
  25. Console.WriteLine(genInstance.GetType().FullName);
  26. var myInterfaceInstance = (IMyInterface) genInstance;
  27. myInterfaceInstance.DoSomething();
  28. object value = genType.InvokeMember("Value", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty,
  29. null, genInstance, null);
  30. Console.WriteLine(value);
  31. }
  32. }
Success #stdin #stdout 0.05s 34872KB
stdin
Standard input is empty
stdout
MyClass`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Did something
0