C # Generics - Может кто-нибудь объяснить эту подпись - PullRequest
0 голосов
/ 06 февраля 2019

Я работаю с открытым исходным кодом C # под названием Merchello.Я пытаюсь настроить его немного, но не думаю, что полностью понимаю часть кода.

Существует существующий контроллер MVC, который мне может потребоваться изменить, но я не до конца понимаюкак его собрать -

Я признаю, что я не знаком с дженериками в C # - может кто-нибудь дать мне объяснение того, что означает эта подпись, в частности, я хотел бы понять, что означает TBillingAddress.Если бы вы могли также указать мне любые ссылки, которые помогли бы мне понять это больше.

public abstract class CheckoutAddressControllerBase<TBillingAddress, TShippingAddress> : CheckoutControllerBase
    where TBillingAddress : class, ICheckoutAddressModel, new()
    where TShippingAddress : class, ICheckoutAddressModel, new()
{

1 Ответ

0 голосов
/ 06 февраля 2019

Для TBillingAddress:

  • class - означает, что тип должен быть ссылочным типом

  • ICheckoutAddressModel - означаеттип должен реализовывать этот интерфейс

  • new() - означает, что тип должен иметь конструктор без параметров

Все эти ограничения ограничивают то, какие типы могут использоваться дляTBillingAddress и ограничьте, что вы можете сделать с типом в любом методе, использующем его.

И TShippingAddress имеет те же ограничения.

Также см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...