I agree with the last bits but usually I prefer to start simple and inject implementations classes instead of interfaces with a DI engine. As long as all your methods/properties are virtual, it should be ok.
Please remember: Be polite, helpful and keep a positive attitude Keep it short Use examples Review spelling and grammar
Please avoid: Long texts Code that is untested Wall of text