【发布时间】:2020-08-06 12:09:35
【问题描述】:
我有界面
public interface IActiveDirectoryService
{
List<ActiveDirectoryUser> GetUsersInGroup(string group);
}
类(使用接口)
public class ActiveDirectoryService : IActiveDirectoryService
{
public List<ActiveDirectoryUser> GetUsersInGroup(string group){...}
}
假类(继承自原类,我只用new关键字重写了一些方法)
public class ActiveDirectoryServiceFake : ActiveDirectoryService
{
public new List<ActiveDirectoryUser> GetUsersInGroup(string group){...}
}
当我直接调用假服务时,新方法(覆盖/隐藏原始方法)有效。
var service = new ActiveDirectoryServiceFake();
var users = service.GetUsersInGroup(group);
但是当我将这个类设置为 DI 时 Startup.cs
services.AddTransient<IActiveDirectoryService, ActiveDirectoryServiceFake>();
我调用_service.GetUsersInGroup(group),在Visual Studio 中我可以看到,我有ActiveDirectoryServiceFake 的实例,但调用了原来的GetUsersInGroup 方法。
为什么会这样?
【问题讨论】:
标签: c# asp.net-core inheritance dependency-injection