I think that your approach is very good and meets the objective, you gain simple invocation of conversion methods and a little more readable code. But you are giving more responsability to the DTO and the Entity, and also coding that responsability out of
the class definition which adds complexity to the understanding of the solution.
EntitiesToDTOs presents an approach which I think is very accurate to comply with DTO pattern as specified by Martin Fowler. You can take a look at:
It is also suitable for using Dependency Injection with Frameworks like Unity. If you use Dependency Injection you will not have to instatiate an Assembler every time you need to do a conversion.
Thing is that if I code assemblers to be
static (which would lead you to not instantiate them) you could manage to get a bottle neck in a "big" application.
But I've never seen this pattern implemented using extension methods and I can only figure out the points I already mentioned, so maybe you can give me the good reasons of why using it and explain it to me a little more.
At the end, if both solutions are good, I can let the user decide which implementation to use: Extension Methods or Assemblers.
Thanks a lot for taking the time to make the comments and contribute with your opinion, and of course: for using EntitiesToDTOs!!!