If you’re doing that, you may as just mock your concrete class. Mockito supports this in Java. Perhaps this is needed in C#?
Java is virtual by default. C# is not. You could mark every single method virtual and mock it like Java. But it’s easier to define a contract and mock that.