Вы можете вводить только в один ctor.
В зависимости от того, как используется этот класс, вы можете:
- Внедрить фабрику в код клиента двумя «новыми» методами.
- Свернуть все аргументы в один ctor и передать NULL, когда не требуется.
Как вызывающий класс может создать тот или иной экземпляр?
Это говорит о том, что вызывающим классам понадобится несколько экземпляров MyDialog? Затем вам нужно использовать фабрику, изготовленную вручную (Assisted Inject может с этим справиться, если у вас только один ctor). Я не знаю деталей того, чем вы занимаетесь, и я, вероятно, повторяю то, что вы уже знаете, но в качестве пустого заявления я бы предложил также извлечь интерфейс из MyDialog и заставить фабрику вернуть их. Таким образом, вы можете подделать MyDialog в тестах.