Кажется, что я не могу определить соглашения команд/событий более одного раза. Каждое зарегистрированное соглашение отменяет предыдущие.NServiceBus Ненавязчивые соглашения Определение команд Как несколько раз
Это работает:
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject1.CommandA" || type.FullName == "MyProject2.CommandB");
Но это не делает:
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject1.CommandA");
configuration.Conventions()
.DefiningCommandsAs(
type => type.FullName == "MyProject2.CommandB");
Зачем мне это нужно:
Я разрабатываю пакет, который когда-то ссылка в проекте NSB будет выполнять периодические действия (отправлять сообщения). Он должен определить собственные соглашения команд в INeedInitialization
, которые будут отобраны во время сканирования сборки. Я не хочу, чтобы пользователь пакета знал, что ему нужно регистрировать соглашения пакета. Однако хост-проект должен регистрировать собственные соглашения для команд. Поэтому мне кажется, что в данный момент мне нужно либо прибегнуть к интерфейсам Marker (чего я не хочу делать, есть веская причина, почему был введен ненавязчивый режим), либо придумать соглашения, как и все команды, которые должны находиться в * .Commands. * пространство имен, которое мне тоже не нравится.
Таким образом, вопросы заключаются в том, как сделать регистрацию пакетов собственными соглашениями ненавязчиво и прозрачно для Хоста.
Редактировать
Другим способом, которым я могу думать о взломе вокруг этого реализуется совместно конвенция одноплодным и регистрация делегатов конвенций к нему. Этот синглтон будет помнить все соглашения и будет добавлять их каждый раз. Не красивый, но не уродливый, чем другие 2 варианта.
Извините, я не думаю, что здесь есть какие-либо опции помимо двух упомянутых вами (пространство имен маркеров и команд). Я бы пошел с условным обозначением пространства имен команд. –
@TylerDay спасибо, вот что я подозревал. Любая подсказка, если конкретно планирует исправить это в v6? –
То, что я не знаю, но если бы я должен был догадаться, я бы сказал, что это, вероятно, по дизайну, а не ошибка. Однако было бы неплохо. –