C#泛型-有人可以解释这个签名

时间:2019-02-06 17:32:11

标签: c# asp.net-mvc generics

我正在处理一个名为Merchello的C#开源项目。我正在尝试对其进行一些自定义,但我认为我不完全了解其中一些代码。

我可能需要更改现有的MVC控制器,但我不完全了解它的组合方式-

我承认我不熟悉C#中的泛型-有人可以给我解释一下此签名的含义,特别是我想了解TBillingAddress的含义。如果您还能将我指向任何有助于我进一步了解的链接。

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

1 个答案:

答案 0 :(得分:2)

对于TBillingAddress

  • class-表示类型必须是引用类型

  • ICheckoutAddressModel-表示类型必须实现此接口

  • new()-表示类型必须具有无参数构造函数

所有这些都限制了TBillingAddress可以使用什么类型,并且限制了您可以使用任何使用该方法的类型来进行的操作。

并且TShippingAddress具有相同的约束。

另请参阅: