Конструктор типа PaymentManager содержит параметр с именем 'paymentMethods' и типом List <IPaymentMethod>, который не зарегистрирован - PullRequest
0 голосов
/ 04 мая 2018

Я также получаю ошибку ниже. Это потому, что это не Список, и если да, то как мне исправить это?

container.RegisterCollection<IPaymentMethod>(new[]
{
    typeof(AuthorizeNetProvider),
    typeof(StripeProvider),
    typeof(PayPalProProvider),
    typeof(PayPalStandardProvider),
    typeof(IntuitProvider),
    typeof(UsaEpayProvider),
    typeof(ITransactProvider),
    typeof(SecureNetProvider),
    typeof(ExposurePayProvider),
    typeof(PayTraceProvider),
    typeof(BraintreeProvider)
});

Error

Конфигурация недействительна. Не удалось создать экземпляр для типа IDivisionsService. Конструктор типа PaymentManager содержит параметр с именем 'paymentMethods' и типом List , который не зарегистрирован. Убедитесь, что List зарегистрирован, или измените конструктор PaymentManager.

* 1015 застройщик *

public PaymentManager(List<IPaymentMethod> paymentMethods)
{
    _paymentMethods = paymentMethods;
}

1 Ответ

0 голосов
/ 04 мая 2018

List<T> - это , в настоящее время не поддерживается в качестве типа коллекции. Измените конструктор на один из следующих:

  • IEnumerable<T>
  • IList<T>
  • ICollection<T>
  • IReadOnlyList<T>
  • IReadOnlyCollection<T>

Первые 5 типов имеют следующее поведение:

  • Они ведут себя как потоков , что означает, что они разрешают экземпляры из контейнера, каждый раз, когда они повторяются.
  • Из-за этого им вводят себя как одиночные. Однако их случаи все еще разрешаются в соответствии с их соответствующим образом жизни.
  • Они неизменны. Попытка добавить, изменить или удалить экземпляры из IList<T> и ICollection<T> завершится неудачей с исключением.

Последний тип, массив, всегда представляет копию экземпляров и не будет вести себя как поток. Поскольку это изменяемый список экземпляров, массив всегда вставляется как Transient, хотя все его списки зависимостей представляют Singleton экземпляров.

...