Können wir von c # auf die F # -Kopier- und Aktualisierungsfunktion zugreifen?
Zum Beispiel können wir in F # definieren
type MyRecord = {
X: int;
Y: int;
Z: int
}
let myRecord1 = { X = 1; Y = 2; Z = 3; }
und um es zu aktualisieren kann ich tun
let myRecord2 = { myRecord1 with Y = 100; Z = 2 }
Das ist großartig, und die Tatsache, dass Datensätze IStructuralEquality ohne zusätzlichen Aufwand automatisch implementieren, lässt mich dies in C # wünschen. Vielleicht kann ich meine Datensätze in F # definieren, aber dennoch einige Aktualisierungen in C # durchführen. Ich stelle mir eine API vor
MyRecord myRecord2 = myRecord
.CopyAndUpdate(p=>p.Y, 10)
.CopyAndUpdate(p=>p.Z, 2)
Gibt es eine Möglichkeit, und ich habe nichts dagegen, schmutzige Hacks, CopyAndUpdate wie oben zu implementieren? Die C # Signatur für CopyAndUpdate wäre
T CopyAndUpdate<T,P>
( this T
, Expression<Func<T,P>> selector
, P value
)