gpt4 book ai didi

c# - 没有可用的公共(public)构造函数 Unity.Exceptions.InvalidRegistrationException

转载 作者:行者123 更新时间:2023-12-04 12:31:14 27 4
gpt4 key购买 nike

我继承了这个项目,我通常不会将 unity 作为我的依赖解析器,所以如果这是一个愚蠢的问题,请原谅我。

当我尝试解析接口(interface)时,我收到了他的以下消息。

内部异常 1:

InvalidOperationException: No public constructor is available for type[ProjectName].ITest

内部异常 2:

InvalidRegistrationException: Exception of type'Unity.Exceptions.InvalidRegistrationException' was thrown.

现在,在有人跳到我面前说我没有构造函数之前,类看起来像这样......它有一个没有参数的构造函数。

namespace ProjectName
{
public class Test : ITest
{
public Test()
{
}

public int Foo() => 99;
}

public interface ITest
{
int Foo();
}
}

所以有一个没有参数的构造函数这是试图解析该类的类。

[Route("api/Test")]
public class TestController : ApiController
{

[Dependency]
public ITest Test { get; set; }


public TestController()
{

}

[HttpPost]
public IHttpActionResult Post()
{
var i = Test.Foo();
return Ok();
}
}

最佳答案

异常原因:

InvalidOperationException: No public constructor is available for type [ProjectName].ITest

是因为 DI 正在尝试创建接口(interface) ITest 而不是 Test 的实例。

当请求 ITest 时,您必须注册依赖以解析为 Test,例如:

services.AddTransient<ITest, Test>();

关于c# - 没有可用的公共(public)构造函数 Unity.Exceptions.InvalidRegistrationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65361467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com