Вам необходимо использовать метод MakeGenericType, например:
var realizedType = thePublisher.MakeGenericType(eventObj.GetType());
Затем вы можете вызвать метод Publish, как он у вас есть в реализованном типе. Это верно, если вы имеете дело с универсальным типом; тем не менее, ваш код не выглядит так, как есть. Интерфейс, который вы используете для eventPublisher, не является универсальным интерфейсом.
Можете ли вы опубликовать оставшуюся часть кода, чтобы мы могли видеть определение интерфейса и определения общих классов.
Редактировать
Вот пример кода, который я написал и показывающий, как вызвать метод для универсального типа с помощью отражения:
public class Publisher<T>
{
public void Publish(T args)
{
Console.WriteLine("Hello");
}
}
static void Main(string[] args)
{
var type = typeof(Publisher<>);
Publisher<EventArgs> publisher = new Publisher<EventArgs>();
var realizedType = type.MakeGenericType(typeof(EventArgs));
realizedType.InvokeMember("Publish", BindingFlags.Default | BindingFlags.InvokeMethod,
null,
publisher
,
new object[] { new EventArgs() });
}