I'm looking at different patterns and techniques for implementing logic to convert object from one class to another, and the most elegant seems to be explicit cast operator overloading (in C#). However, it seems to me that it violates the Dependency Inversion principle, as it requires one concrete class to have references to another concrete class. Is this assessment accurate? Is it problematic? Is there a way to implement explicit cast operator overloading without violating the DI principle?