微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 声明2个类似的匿名对象

下面是2个匿名对象的声明.第二个是第一个完全相同的副本,除了里面没有lastRefresh元素.

有没有办法声明这两个对象而不重复完全相同的部分?

var routeValuesForAutoRefresh = new
{
    page = @ViewBag.nextPage,lastRefresh = @ViewBag.lastRefresh,searchTerm = Request["searchTerm"],searchColumn = Request["searchColumn"],searchOrder = Request["searchOrder"],searchDescending = (Request["searchDescending"] ?? "true").ToLower().IndexOf("true") > -1,requestStatus0 = (Request["requestStatus0"] ?? "false").ToLower().IndexOf("true") > -1,requestStatus1 = (Request["requestStatus1"] ?? "true").ToLower().IndexOf("true") > -1,requestStatus3 = (Request["requestStatus3"] ?? "true").ToLower().IndexOf("true") > -1,requestStatus5 = (Request["requestStatus5"] ?? "true").ToLower().IndexOf("true") > -1,requestStatus7 = (Request["requestStatus7"] ?? "true").ToLower().IndexOf("true") > -1,requestStatus9 = (Request["requestStatus9"] ?? "true").ToLower().IndexOf("true") > -1
};
var routeValuesForNextPage = new
{
    page = @ViewBag.nextPage,requestStatus9 = (Request["requestStatus9"] ?? "true").ToLower().IndexOf("true") > -1
};

解决方法

它没有语法,但你有几个不错的解决方法

>使您的类命名,并从另一个派生一个(或从公共基础派生)
>使用公共字段创建第三个匿名对象,然后在“真实”命名对象中使用它
>创建单独的局部变量,并使用它们来创建两个匿名对象的字段.

我更喜欢第一种方法,但另外两种方法是改进.

以下是第二种方法的示例:

var routeValuesForNextPage = new
{
    page = @ViewBag.nextPage,requestStatus9 = (Request["requestStatus9"] ?? "true").ToLower().IndexOf("true") > -1
};
var routeValuesForAutoRefresh = new {
    routeValuesForNextPage,lastRefresh = @ViewBag.lastRefresh
};

以下是第三种方法的示例:

var page = @ViewBag.nextPage;
var searchTerm = Request["searchTerm"];
var searchColumn = Request["searchColumn"];
var searchOrder = Request["searchOrder"];
var searchDescending = (Request["searchDescending"] ?? "true").ToLower().IndexOf("true") > -1;
var requestStatus0 = (Request["requestStatus0"] ?? "false").ToLower().IndexOf("true") > -1;
var requestStatus1 = (Request["requestStatus1"] ?? "true").ToLower().IndexOf("true") > -1;
var requestStatus3 = (Request["requestStatus3"] ?? "true").ToLower().IndexOf("true") > -1;
var requestStatus5 = (Request["requestStatus5"] ?? "true").ToLower().IndexOf("true") > -1;
var requestStatus7 = (Request["requestStatus7"] ?? "true").ToLower().IndexOf("true") > -1;
var requestStatus9 = (Request["requestStatus9"] ?? "true").ToLower().IndexOf("true") > -1;

var routeValuesForAutoRefresh = new {
    page,searchTerm,searchColumn,searchOrder,searchDescending,requestStatus0,requestStatus1,requestStatus3,requestStatus5,requestStatus7,requestStatus9
};
var routeValuesForNextPage = new {
    page,requestStatus9
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐