C# 使用服务ASP.NET核心调用参数化构造函数

C# 使用服务ASP.NET核心调用参数化构造函数,c#,asp.net-core,C#,Asp.net Core,我不熟悉.NETCore,不知道下面的内容是否可以实现。我如何调用我的服务类构造函数,将请求数据作为参数发送 我的请求模型类 public class TestRequestcs { public int aaa { get; set; } public int bbb { get; set; } } 我的服务接口 public interface ITestService { string ReturnResult()

我不熟悉.NETCore,不知道下面的内容是否可以实现。我如何调用我的服务类构造函数,将请求数据作为参数发送

我的请求模型类

public class TestRequestcs 
    {
        public int aaa { get; set; }
        public int bbb { get; set; }
    }
我的服务接口

public interface ITestService
    {
        string ReturnResult();
    }
我的服务班

 public class TestService : ITestService
    {
        public int aaa { get; private set; }
        public int bbb { get; private set; }
        public TestService(int a,int b)
        {
            this.aaa = a;
            this.bbb = b;
        }
        public TestService()
        {
        }
        public string ReturnResult()
        {
            return (this.aaa + this.bbb).ToString();
        }
    }
我的控制器

 public class ValuesController : ControllerBase
    {
        private readonly ITestService _TestService;

        public ValuesController(ITestService TestService)
        {
            _TestService = TestService;
        }

        [HttpPost]
        [Route("TestService")]
        public ActionResult TestInterFaceService([FromBody] TestRequestcs _data)
        {
            try
            {
                if (!ModelState.IsValid)
                    return BadRequest(ModelState);
                **// How to invoke _TestService(_data.aaa,_data.bbb);**
                var Result = _TestService.ReturnResult();
                return Ok(Result);

            }
            catch (Exception ex)
            {

                return BadRequest(ex);
            }
        }

    }
  • 使两个接口具有一个返回int的属性/方法:
  • 接口IAAA
    {
    int AAA{get;}
    }
    接口IBBB
    {
    int BBB{get;}
    }
    
  • 让您的
    TestService
    构造函数接受所述接口的实例:
  • 公共类测试服务:ITestService
    {
    公共测试服务(IAAA a、IBBB b)
    {
    这个.aaa=a.aaa;
    this.bbb=b.bbb;
    }
    }
    
  • 创建所述接口的实现:
  • 公共类AAAImpl:IAAA
    {
    公共int AAA=>返回42;
    }
    公共类BBBImpl:IBBB
    {
    公共int BBB=>返回1337;
    }
    
  • 将接口映射到
    Startup.cs
    中的
    ConfigureServices
    中的实现:
  • services.AddSingleton();
    services.AddSingleton();
    
    .NETCore的依赖项注入将完成其余工作


    记住,接口是一切的答案;)

    将服务接口更改为 字符串返回结果(int aaa,int bbb); 更改控制器 var Result=_TestService.ReturnResult(_data.aaa,_data.bbb)

    通常在服务类中保存数据不是一个好的设计,使用方法参数更好。若您确实需要在服务类中存储数据,您可以在控制器中手动创建新的TestService,而不是注入服务,但这是更糟糕的设计