public abstract void DoSomething(string asd, T obj);
public override void DoSomething(string asd, int obj)
public static void Main(string[] args)
Type unboundGenericType = typeof(A<>);
Type boundGenericType = unboundGenericType.MakeGenericType(typeof(int));
Type myClassType = typeof(MyClass);
object instance = Activator.CreateInstance(myClassType);
MethodInfo doSomethingMethod = boundGenericType.GetMethod("DoSomething");
doSomethingMethod.Invoke(instance, new object[] {"Hello", 123});