无法解析类型简单界面的服务

时间:2020-07-02 10:29:52

标签: c# asp.net api dependency-injection core

试图在startup.cs中添加一个简单的类作为服务,但是错误不断使事情变得混乱。

public interface IAHSRepository : IDisposable
{
    string GetModules();
    string GetInvoices();
}

读取文件的类

 public class AHSRepository : IAHSRepository
{
    public AHSRepository(IWebHostEnvironment webHostEnvironment, ILogger<AHSRepository> logger)
    {
        hostEnvironment = webHostEnvironment;
        jsonFileName = hostEnvironment.WebRootPath + "/db.json";
        _logger = logger;

    }

    private readonly IWebHostEnvironment hostEnvironment;
    private readonly string jsonFileName;
    private readonly ILogger<AHSRepository> _logger;
    private bool disposedValue;

    public string GetInvoices()
    {
        throw new NotImplementedException();
    }

    public string GetModules()
    {
        return ReadJSonData(jsonFileName).SelectToken("modules").ToString();
    }


    private JObject ReadJSonData(string jsonFileName)
    {
        try
        {
            JObject result;


            using (StreamReader file = File.OpenText(jsonFileName))
            using (JsonTextReader reader = new JsonTextReader(file))
            {
                result = (JObject)JToken.ReadFrom(reader);
            }

            return result;

        }
        catch (Exception  ex)
        {
            _logger.LogError("Error Occurred : " + ex.Message);
            return null;
        }          

    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposedValue)
        {
            if (disposing)
            {
                // TODO: dispose managed state (managed objects)
            }

            // TODO: free unmanaged resources (unmanaged objects) and override finalizer
            // TODO: set large fields to null
            disposedValue = true;
        }
    }

    // // TODO: override finalizer only if 'Dispose(bool disposing)' has code to free unmanaged resources
    // ~AHSRepository()
    // {
    //     // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
    //     Dispose(disposing: false);
    // }

    public void Dispose()
    {
        // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
        Dispose(disposing: true);
        GC.SuppressFinalize(this);
    }

试图向Startup.cs添加服务

 public void ConfigureServices(IServiceCollection services)
    {
    services.AddSingleton<IAHSRepository, AHSRepository>();
    services.AddAuthentication(sharedOptions =>
    {
        sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;

    })
    .AddAzureAdBearer(options => Configuration.Bind("AzureAd", options)) ;        

    services.AddMvc();        

    }

错误

InvalidOperationException:尝试激活“ proto_api.Controllers.ModulesController”时,无法解析类型为“ proto_api.Interfaces.IAHSRepository”的服务。

0 个答案:

没有答案