加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:19:29 所属栏目:百科 来源:网络整理
导读:下面是2个匿名对象的声明.第二个是第一个完全相同的副本,除了里面没有lastRefresh元素. 有没有办法声明这两个对象而不重复完全相同的部分? var routeValuesForAutoRefresh = new{ page = @ViewBag.nextPage,lastRefresh = @ViewBag.lastRefresh,searchTerm
下面是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
};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读