私は華麗だとレコードが自動的に余分な労力でIStructuralEqualityを実装しているという事実は、私はこの中に望むなりC#からF#のコピーと更新機能にアクセスできますか?我々は</p> <pre><code>type MyRecord = { X: int; Y: int; Z: int } let myRecord1 = { X = 1; Y = 2; Z = 3; } </code></pre> <p>を定義することができますし、それを更新するために、F#で例えば
let myRecord2 = { myRecord1 with Y = 100; Z = 2 }
を行うことができますC#。しかし、おそらく私はF#で自分のレコードを定義することはできますが、それでもC#でいくつかの更新を行うことができます。私は
MyRecord myRecord2 = myRecord
.CopyAndUpdate(p=>p.Y, 10)
.CopyAndUpdate(p=>p.Z, 2)
のようなAPIは、方法があると想像し、私は上記のようにCopyAndUpdateを実装するために、汚いハックを気にしませんか? CopyAndUpdateのためのC#のsignitureは
T CopyAndUpdate<T,P>
(this T
, Expression<Func<T,P>> selector
, P value
)
おそらくこれは役に立ちます:http://v2matveev.blogspot.com/2010/05/copy-and-update-in-c.html – desco
[C#:duplicate of extension methodを "with "F#で?](http://stackoverflow.com/questions/6832880/c-how-to-define-an-extension-method-as-with-in-f) –