Ash*_*our 3 c# asp.net-mvc unity-container unity-interception
我继承了这个项目,我通常不统一作为我的依赖解析器,所以请原谅我,如果这是一个愚蠢的问题。
当我尝试解决接口时,我收到以下消息。
内部异常1:
InvalidOperationException:没有可用于类型 [ProjectName].ITest 的公共构造函数
内部异常2:
InvalidRegistrationException:引发了“Unity.Exceptions.InvalidRegistrationException”类型的异常。
现在,在有人跳到我身上并说我没有构造函数之前,该类看起来像这样......它有一个没有参数的构造函数。
namespace ProjectName
{
public class Test : ITest
{
public Test()
{
}
public int Foo() => 99;
}
public interface ITest
{
int Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
所以有一个没有参数的构造函数 这是试图解析该类的类。
[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();
}
}
Run Code Online (Sandbox Code Playgroud)
异常原因:
InvalidOperationException: No public constructor is available for type [ProjectName].ITest
Run Code Online (Sandbox Code Playgroud)
是因为 DI 试图创建接口的实例ITest而不是Test.
当请求 ITest 时,您必须注册依赖项以解析为 Test,例如:
services.AddTransient<ITest, Test>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9976 次 |
| 最近记录: |