Когда NServiceBus сканирует сборку, ищет типы сообщений, но находит только открытый шаблон c тип AddRequest<T>
. Когда вы отправляете сообщение, вы отправляете экземпляр AddRequest<MyObject>
, который является закрытым шаблоном c type, очень отличается от обнаруженного.
К сожалению, система маршрутизации NServiceBus не знает о обобщенных c типах и использует равенство типов для определения маршрута. Из-за этого он не знает, куда отправлять AddRequest<MyObject>
.
. Причина, по которой система маршрутизации NServiceBus была разработана таким образом, заключается в том, что она уже использует один механизм для групповой регистрации маршрутов, который основан на сборке и пространстве имен. Вы можете зарегистрировать один маршрут для набора типов при условии, что они определены в одной сборке и / или пространстве имен. Если бы вы ввели еще один механизм группировки, например, основанный на обобщенных типах c или на основе наследования типов (т. Е. Маршрут для базового типа используется для производных типов), мы бы оказались в ситуации, когда у типа может быть несколько маршрутов, связанных с отсутствием ясный способ выбрать одно над другими.