I have interface
public interface IActiveDirectoryService
{
List<ActiveDirectoryUser> GetUsersInGroup(string group);
}
class (use interface)
public class ActiveDirectoryService : IActiveDirectoryService
{
public List<ActiveDirectoryUser> GetUsersInGroup(string group){...}
}
fake class (inherit from original class, I override only some methods with new keyword)
public class ActiveDirectoryServiceFake : ActiveDirectoryService
{
public new List<ActiveDirectoryUser> GetUsersInGroup(string group){...}
}
When I call fake service directly, the new method (which override/hide the original method) works.
var service = new ActiveDirectoryServiceFake();
var users = service.GetUsersInGroup(group);
but when I set this class into DI in Startup.cs
services.AddTransient<IActiveDirectoryService, ActiveDirectoryServiceFake>();
and I call _service.GetUsersInGroup(group)
, in visual studio I can see, that I have instance of ActiveDirectoryServiceFake
but the original GetUsersInGroup
method is called.
Why is that ?