我可以使用C#dapper做这样的事情:
IFoo bar = _dbConnection.Query<IFoo>("My query there");
Run Code Online (Sandbox Code Playgroud)
现在我不能这样做,因为没有必要的默认无参数构造函数.
是否有一些技巧来尊重SOLID的神(特别是Liskov替换原则的精神)或者我应该保留它并将我的数据映射到IFoo而不是Foo?
我真的很担心尊重这些SOLID的东西,但仍然不知道我应该在哪里做,所以寻找这个具体情况的建议.
您需要实例化类的具体实现.在内部,它必须创建一个新对象.您无法创建接口的新实例:
var foo = new IFoo(); // This won't build!
Run Code Online (Sandbox Code Playgroud)
您仍然可以将结果转换为接口,但是您需要从数据库构建具体类型.
IEnumerable<IFoo> foo = _dbConnection.Query<Foo>("My query there");
Run Code Online (Sandbox Code Playgroud)