【发布时间】:2020-12-30 07:15:51
【问题描述】:
为了澄清我的问题,假设我有以下非常基本的统计接口和类:
public interface IStatistics
{
void IncrementPacketsDiscovered();
}
public class Statistics : IStatistics
{
private int numberOfPacketsDiscovered = 0;
public void IncrementPacketsDiscovered()
{
numberOfPacketsDiscovered++;
}
}
然后假设我有以下类接收注入的 IStatistics 对象:
public class Reporter
{
private IStatistics _statistics;
public Reporter(IStatistics statistics)
{
_statistics = statistics;
_statistics.IncrementPacketsDiscovered();
}
}
为什么我可以在 IStatistics 对象上调用 IStatistics 方法 IncrementPacketsDiscovered() 并且它自动知道要获取在 Statistics 类中实现的方法定义?
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
因为您在某处告诉 DI 容器
IStatistics将被Statistics解析?所以DI容器看到IStatistics的请求,只返回一个Statistics对象 -
看看你是如何注入它的,你做了这样的事情:
services.AddTransient<IStatistics, Statistics>();所以它就是这样关联它的。 -
@CamiloTerevinto @Andy 啊,是的,你们两个都是对的。在我的主要方法中,我有:
public static Statistics statistics = new Statistics();。我最终致电:services.AddSingleton<IStatistics>(statistics);。非常感谢您的帮助,真的为我澄清了一切:)
标签: c# dependency-injection interface