如何解决如何从ASP.NET Core MVC中的另一个控制器访问GET方法?
我有两个控制器:OcorrenciasAPI和IgnicoesAPI。我需要通过控制器IgnicoesAPI通过OcorrenciasAPI控制器访问GET方法。最好的方法是什么?
解决方法
这不是您问题的确切答案,但这可能会解决您的问题。将GET方法中的代码折射到一个通用类中,并从两个控制器访问该类。在下面添加示例代码。
型号
public sealed class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
存储库
public class PersonRepository
{
public IEnumerable<Person> GetPeople()
{
return new List<Person>()
{
new Person{ID = 1,Name = "Name 1" },new Person{ID = 2,Name = "Name 2" }
};
}
}
第一个Api控制器
[Route("api/[controller]")]
[ApiController]
public class MyFirstApiController : ControllerBase
{
private readonly PersonRepository personRepository = new PersonRepository();
[HttpGet]
public IEnumerable<Models.Person> Get()
{
return personRepository.GetPeople();
}
}
第二个Api控制器
[Route("api/[controller]")]
[ApiController]
public class MySecoundApiController : ControllerBase
{
private readonly PersonRepository personRepository = new PersonRepository();
[HttpGet]
public IEnumerable<string> Get()
{
// Calling same repository here.
var people = personRepository.GetPeople();
return people.Select(p=> p.Name);
}
}
,
使用共享功能创建一个新类,将其作为服务添加到startup.cs中,然后将其注入到控制器中。
public interface IMyService
{
string MyMethod();
}
public class MyService : IMyService
{
public string MyMethod()
{
throw new NotImplementedException();
}
}
Startup.cs
services.AddTransient<IMyService,MyService>();
OcorrenciasAPI构造函数
private readonly IMyService _myService;
public OcorrenciasAPI (IMyService myService)
{
_myService = myService
}
IgnicoesAPI构造函数
private readonly IMyService _myService;
public IgnicoesAPI(IMyService myService)
{
_myService = myService
}
使用
var result = _myService.MyMethod();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。