这是一个相对直截了当的问题.但我想知道通过使用接口访问单独项目中的方法的正确用法是什么.
项目:Test.ClassLibrary
界面:
public interface ITest
{
string TestMethod();
}
Run Code Online (Sandbox Code Playgroud)
课程:
public class Test : ITest
{
public string TestMethod()
{
return "Test";
}
}
Run Code Online (Sandbox Code Playgroud)
项目: Test.Web
控制器:
public class HomeController : Controller
{
private ITest test;
public ActionResult Index()
{
return Content(test.TestMethod());
}
}
Run Code Online (Sandbox Code Playgroud)
以上返回a NullReferenceException
.我假设它是因为控制器到达接口,并且不知道接下来要去哪里.
解决这个问题的最佳方法是什么?我是否必须Test
在控制器中引用该类,或者我可以通过仅引用来解决这些问题ITest
?
Ant*_*ram 20
ITest test
,你只是声明它.Test
类不从接口继承.您需要更新您的班级声明
public class Test : ITest // interface inheritance
{
Run Code Online (Sandbox Code Playgroud)
并在您的控制器中,实例化test
.
ITest test = new Test();
Run Code Online (Sandbox Code Playgroud)
随着您的进一步发展,您将需要探索将Test
实例注入控制器的技术,以便您不必依赖它,而只是在接口上ITest
.评论提到IoC或控制反转,但你应该研究各种依赖倒置技术技术(IoC就是其中之一,依赖注入等).