¿Podemos obtener acceso a la función de copia y actualización de F # desde c #?
Por ejemplo en F # podemos definir
type MyRecord = {
X: int;
Y: int;
Z: int
}
let myRecord1 = { X = 1; Y = 2; Z = 3; }
Y para actualizarlo puedo hacerlo.
let myRecord2 = { myRecord1 with Y = 100; Z = 2 }
Eso es genial, y el hecho de que los registros implementen automáticamente la igualdad de calidad de las carreteras sin ningún esfuerzo adicional me hace desear esto en C #. Sin embargo, tal vez pueda definir mis registros en F # pero aún así poder realizar algunas actualizaciones en C #. Me imagino una API como
MyRecord myRecord2 = myRecord
.CopyAndUpdate(p=>p.Y, 10)
.CopyAndUpdate(p=>p.Z, 2)
¿Hay alguna manera, y no me importan los hacks sucios, para implementar CopyAndUpdate como anteriormente? La firma C # para CopyAndUpdate sería
T CopyAndUpdate<T,P>
( this T
, Expression<Func<T,P>> selector
, P value
)