То, что вы ищете, является своего рода конфликтом с самим собой. В общем, вы хотите получить услугу, когда знаете ее название. Тогда мой вопрос: если вы знаете имя службы
_paymentResolver.GetPaymentMethod("CreditCard/DebitCard")
, вы также должны знать тип службы
class Invoice
{
public Invoice(IPaymentMethod<CreditCard> cc, IPaymentMethod<DeditCard> dc) {}
}
Так что же мешает вам использовать тип, а не имя? Не говоря уже о том, что он предлагает вам строго печатать, поэтому вы не рискуете ошибочно набрать название.
Надеюсь, это поможет вам очистить ваш разум.