无法在具有布尔值的.net核心3上创建服务

问题描述 投票:0回答:3

我有这堂课:

public class ApiService
    {
        public bool Success { get; set; }
        public object Data { get; set; }
        public ApiService(bool success, object data)
        {
            this.Success = success;
            this.Data = data;
        }
    }

我尝试使用以下行将其添加到startup.cs中的服务中:

 services.AddSingleton<ApiService>();

但是我有这个例外:

Unhandled exception. System.AggregateException: 
Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: ApiService Lifetime: Singleton ImplementationType: 
ApiService': 
Unable to resolve service for type 'System.Boolean' while attempting to activate ApiService'.)

先谢谢您能解决这个问题。

最诚挚的问候。

c# asp.net-core service boolean asp.net-core-3.0
3个回答
0
投票

尝试:

services.AddSingleton<ApiService>(new ApiService(true,null));

0
投票

这仅在构造函数中的参数均为接口且已在DI管道中注册时才有效。如果要使用这样的具体类型,则必须在注册时提供值]

services.AddSingleton<ApiService>(new ApiService(false,data));

它不知道要在此构造函数中输入什么值。另一个选择是提供一个没有参数的默认构造函数。

但是实际上,您不需要向Dependency Injection注册此类,因为该类首先没有要注入的依赖项。如果您真的只希望在整个应用程序中将此实例化为静态。单例是反模式。


0
投票

之所以这样,是因为您的类构造函数需要2个参数。该错误表明,依赖性注入器引擎尝试创建您的类的实例,但由于未传递这两个参数bool success, object data而失败您可以使用services.AddSingleton<ApiService>(new ApiService(true,null));

© www.soinside.com 2019 - 2024. All rights reserved.