这是一个相对直截了当的问题.但我想知道通过使用接口访问单独项目中的方法的正确用法是什么.
项目: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就是其中之一,依赖注入等).
| 归档时间: |
|
| 查看次数: |
45045 次 |
| 最近记录: |