To avoid dependencies on a specific service implementation, you can instead configure a service for a specific interface and then depend just on the interface. This approach gives you the flexibility to swap out the service implementation, which makes the code more testable and easier to maintain.
Consider an interface for the PersonService class:
C#Copy
public interface IPersonService
{
string GetPersonName();
}
This interface defines the single method, GetPersonName, that returns a string. This PersonService class implements the IPersonService interface:
C#Copy
internal sealed class PersonService : IPersonService
{
public string GetPersonName()
{
return "John Doe";
}
}
Instead of registering the PersonService class directly, you can register it as an implementation of the IPersonService interface:
C#Copy
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSingleton<IPersonService, PersonService>();
var app = builder.Build();
app.MapGet("/",
(IPersonService personService) =>
{
return $"Hello, {personService.GetPersonName()}!";
}
);
app.Run();
contact
Leave a Reply