我有这堂课:
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'.)
先谢谢您能解决这个问题。
最诚挚的问候。
尝试:
services.AddSingleton<ApiService>(new ApiService(true,null));
这仅在构造函数中的参数均为接口且已在DI管道中注册时才有效。如果要使用这样的具体类型,则必须在注册时提供值]
services.AddSingleton<ApiService>(new ApiService(false,data));
它不知道要在此构造函数中输入什么值。另一个选择是提供一个没有参数的默认构造函数。
但是实际上,您不需要向Dependency Injection注册此类,因为该类首先没有要注入的依赖项。如果您真的只希望在整个应用程序中将此实例化为静态。单例是反模式。
之所以这样,是因为您的类构造函数需要2个参数。该错误表明,依赖性注入器引擎尝试创建您的类的实例,但由于未传递这两个参数bool success, object data
而失败您可以使用services.AddSingleton<ApiService>(new ApiService(true,null));