TL;DR:我想要一个可以扩展对象并且可以像这样使用的扩展方法:
var OtherInstance = MyObject.Altered(new { Prop1 = "123", Prop6 = 4 });
我希望 的所有属性都OtherInstance
与 相同MyObject
,除了Prop1
和Prop6
。我不期望/不要求它进行深度克隆。
背景
我有一个 MVC 页面,允许用户搜索以显示数据列表。
我的页面模型具有各种过滤器属性以及页码。
在我的数据列表的底部,我有一个指向使用创建的下一页的链接Html.ActionLink
。我传入了模型的副本,并增加了页码:
<%= Html.ActionLink("Next", "Index", new
{
Page = (Model.Page ?? -1) + 1,
Model.SortProperties,
Model.SortDescending,
Model.FilterId,
Model.FilterApprovalsLevelId,
Model.FilterStandardTypeId,
Model.FilterApprovalsBodyReferenceNumber,
Model.FilterCertificateOrApprovalNumber
}, new { id = "next-page" })%>
如果我向模型添加新过滤器,很容易忘记在此处添加属性,因此我希望能够克隆对象并流畅地更改 1 或 2 个属性,如下所示:
<%= Html.ActionLink("Next", "Index", Model.Altered(new
{
Page = (Model.Page ?? -1) + 1
}), new { id = "next-page" })%>