Sto osservando diversi modelli e tecniche per l'implementazione della logica per convertire oggetti da una classe all'altra, e il più elegante sembra essere l'overloading dell'operatore del cast esplicito (in C #). Tuttavia, mi sembra che viola il principio di dipendenza da inversione, in quanto richiede ad una classe concreta di avere riferimenti ad un'altra classe concreta.
Questa valutazione è accurata? È problematico? C'è un modo per implementare l'overloading dell'operatore di cast esplicito senza violare il principio DI?
public class Model
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
public class ViewModel
{
public string PropOne { get; set; }
public static explicit operator ViewModel(Model model)
{
// Conversion logic that references both classes
}
}
public class Program
{
public void Main()
{
var model = new Model{ Prop1 = "SomeValue", Prop2 = "SomeOtherValue" };
var viewModel = (ViewModel) model;
Console.WriteLine(viewModel.PropOne); // Outputs "SomeValue" to the console
Console.ReadKey();
}
}