none
如何简化Dictionary<String, Dictionary<String, Object>> 的初始化编写?能靠近JavaScript编写Json那样吗? RRS feed

  • 问题

  • 已更新说明c#代码

                 var dic = new Dictionary<string, Dictionary<string, object>>
                {
                    {"login_name",new Dictionary<string, object>{
                        { "validationList",new List< Dictionary<string, object>> {
                                         new Dictionary<string, object> {
                                             { "Func_name","IsNotEmpty"}, {"successState", true },{"message", "请输入用户名" }
                                         },
                                          new Dictionary<string, object> {
                                              { "Func_name","IsStringLengthRange"},{"successState", true },{"message", "字符串长度必须在2到7之间" },{"mix", 2 },{"max", 7 }
                                          },
                                          new Dictionary<string, object> {
                                              { "Func",new Func<Dictionary<String,Object>,bool>((obj)=> {
                                                   Dictionary<string,object> name = (Dictionary<string, object>)obj["login_name"];
                                                string nameStr = (String)name["value"];
                                                if (nameStr == "123")
                                                {
                                                    return false;
                                                }
                                                return false;
                                               }) },{"successState", true },{"message", "内容不能是123" }
                                          },
                                  } },
                          { "value",""},
                         { "errorMassage",""}
                        }
                    },
                };


    我想要在C#里做到初始化定义一个拥有不确定value类型的字典对象,首先字典泛型类型确定的是Dictionary<String, Dictionary<String, Object>>,其中泛型里的Object就是指不确定value类型。这个object,我初始化时可能会定义成字符串,数字,或是字典,集合,委托,或是一个实体,

    而我想要的是初始化Dictionary<String, Dictionary<String, Object>>时,能像下图里的JavaScript里定义Json对象的代码那样简便,这样比较清晰,

       form:{
                login_name:{
                  value:"",
                  errorMessage:"",
                  validationList:[
                    { Func_name:"IsNotEmpty",message:"请输入登录名",successState:true},
                    { Func_name:"IsStringLengthRange",message:"字符串长度必须在2到7之间",successState:true,requirement:{
                        max:7,
                        min:2
                    }},
               
                    { Func:function(dic){
                        if(dic.login_name.content=="123"){
                          return false;
                        }
                      return true;
                    },message:"内容不能是123",successState:true
                  },
                  ]
                },
    }


    在Js的内容中,其中form的子对象的子对象的属性数量和类型是不确定的,不仅仅只有value,errorMassage,validationList属性,可能会有其他属性。




    2019年12月13日 2:37

全部回复

  • Hi 

    我测试你的代码,发现它们并不能使用。我不太明白你所说的简化是什么意思,是对代码的简化还是对结构的简化。

    因此,我希望你可以提供有关简单而完整的示例来表达你想要做的东西。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年12月13日 6:20
    版主
  • Hi 

    我测试你的代码,发现它们并不能使用。我不太明白你所说的简化是什么意思,是对代码的简化还是对结构的简化。

    因此,我希望你可以提供有关简单而完整的示例来表达你想要做的东西。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    我想要在C#里做到初始化定义一个拥有不确定value类型的字典对象,首先字典泛型类型确定的是Dictionary<String, Dictionary<String, Object>>,其中泛型里的Object就是指不确定value类型。这个object,我初始化时可能会定义成字符串,数字,或是字典,集合,委托,或是一个实体,

    而我想要的是初始化Dictionary<String, Dictionary<String, Object>>时,能像JavaScript里定义Json对象的代码那样简便,问题说明第二个图里表示的就是第一个图里的c#代码在JavaScript里的初始化定义方式,我希望在c#开发里能以这样或类似的方式进行简便的初始化定义,这样比较清晰,我发布问题附带的c#代码已经修改,是我没处理好


    2019年12月14日 4:28
  • Hi 

    感谢你的反馈。

    我感觉你的问题仍然有一些模糊。首先,Object类型就已经代表了所有类型的可能性。

    其次,我发现你所说的简化字典,我没有看出来是如何进行简化的。

    因此,我希望你解释清楚一点。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2019年12月16日 8:30
    版主