C# 使用服务ASP.NET核心调用参数化构造函数
我不熟悉.NETCore,不知道下面的内容是否可以实现。我如何调用我的服务类构造函数,将请求数据作为参数发送 我的请求模型类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()
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);
}
}
}
接口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,而不是注入服务,但这是更糟糕的设计