将参数传递给抽象类构造函数 c#

时间:2021-02-04 00:36:46

标签: c# asp.net .net asp.net-mvc oop

我有一个像下面这样的抽象类:

Public abstract class Test
{
    private readonly ILogger _logger;

    public Test(ILogger logger)
    {
        _logger = logger;
    }

    public ActionResult GetData()
    {
        try
        {

        }

        catch(Exception exe)

        {

            _logger.log("Exception");

        }
    }
}

现在,我有另一个类,它以以下方式使用上述内容:

Public class TestProcess
{
    public Test tst {get; protected set;}

    public TestProcess(Test tesstt)
    {
        tst = tesstt;
    }
}

现在,我想将 ILoggerTestProcess 类传递给我的抽象构造函数。有人能帮我看看我该怎么做吗?

2 个答案:

答案 0 :(得分:0)

建议做以下

Public class TestProcess:Test
{
    public ILogger _logger {get; set;}

    public TestProcess(ILogger logger): : base(logger)
    {
        _logger = logger;
    }
}

答案 1 :(得分:0)

有两种方法可以做到这一点,在这两种方法中,您都需要稍微更改代码。

  1. 使用 Test(abstract) 类扩展您的 TestProcess 类。

    公共类 TestProcess:Test{}

  2. 将您的抽象类更改为普通类并在那里实现单例。那么你可以在创建Test类的实例时传递ILogger。

    公共类测试{}