Autowiring publishers/listeners with reflection in Unity Framework
typeof(IMessageListener&lt;object&gt;).GetGenericTypeDefinition()


You can simplify this to just:

typeof(IMessageListener&lt;&gt;)




Why are you combing Where() with an if? I would stick with one or the other.



interf.GetGenericArguments().FirstOrDefault()


Don't use OrDefault when you're not going to deal with the null. That way, when an error happens, you're going to get a descriptive exception right away, instead of a confusing NullReferenceException later.

If this is part of the exception handling that you removed, then that makes it hard to review your code properly.



// […] the array is ugly, but i just keep getting an error without it


You have to use an array here, MethodInfo.Invoke() is not a params method.