gpt4 book ai didi

c# - 在 C# 中调用 super 构造函数

转载 作者:太空狗 更新时间:2023-10-29 20:05:43 25 4
gpt4 key购买 nike

我有一些类,如 AccountsController、ProductsController 等,它们都继承自 BaseController。 Unity 根据需要设置我的服务。这些类也都需要 _sequence 服务。因为这是所有类的共同要求,所以我想在 BaseController 中对此进行编码。

public class AccountsController : BaseController
{
public AccountsController(
IService<Account> accountService) {
_account = accountService;
}

public class ProductsController : BaseController
{
public ProductsController(
IService<Account> productService) {
_product = productService;
}


public class BaseController : Controller
{
public IService<Account> _account;
public IService<Product> _product;
protected ISequenceService _sequence;

public BaseController(
ISequenceService sequenceService) {
_sequence = sequenceService;
}

但是我该怎么做呢?我是否应该在每个 AccountsController 和 ProductsController 的构造函数中设置对 BaseController 的调用?

最佳答案

你可以链constructors :

public class ProductsController : BaseController
{
public ProductsController(
IService<Account> productService) : base(productService)
{
_product = productService;
}
}

请注意,链接的 BaseController(使用 base 关键字)已传递给 productService 参数,但这可以是任何内容。

更新:

可以执行以下操作(穷人的依赖注入(inject)):

public class ProductsController : BaseController
{
public ProductsController(
IService<Account> productService) : base(new SequenceService())
{
_product = productService;
}
}

或者,通过您的继承类型传递对ISequenceService 的依赖:

public class ProductsController : BaseController
{
public ProductsController(
IService<Account> productService, ISequenceService sequenceService)
: base(sequenceService)
{
_product = productService;
}
}

关于c# - 在 C# 中调用 super 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com