动态对象是不可能的?在WCF(json)中构建响应时,我很确定它不可能使用完全动态的对象,但只是想先在这里仔细检查一下。一个理想的响应应该是这样的::"bar"}}在“已编译”代码中,上面的代码可以使用以下架构(略微伪代码)执行:publicclassCharacter{stringurl{get;set;}stringdesc{get;set;}}publicclassUserTypes{publicCharacterBartSimpson{get;set;}publicCharacterLisaSimpson{get;set;}}但我的主要目标是BartSimpson和LisaSimpson不是“编译的”,所以我可以有任意数量的Character类和任意名称/丽莎·辛普森。在您的服务实现类的顶部添加以下内容(确保您还在项目中添加了正确的引用):usingNewtonsoft.Json;使用System.Dynamic;使用System.IO;使用系统文本;您可以尝试使用此输出dynamicSimplemethodforresult:publicstringGetData(){dynamicd=newExpandoObject();动态bartSimpson=newExpandoObject();动态lisaSimpson=newExpandoObject();bartSimpson.url="foo";bartSimpson.desc="酒吧";lisaSimpson.url="foo";lisaSimpson.desc="酒吧";d.userTypes=newExpandoObject();d.userTypes.BartSimpson=bartSimpson;d.userTypes.LisaSimpson=lisaSimpson;;varsb=newStringBuilder();使用(varsw=newStringWriter(sb)){s.Serialize(sw,d);}返回sb.ToString();在值中传递Bart和Lisa),您可以这样做:publicstringGetData(stringcomaSeparatedNames){string[]names=comaSeparatedNames.Split(',');动态d=newExpandoObject();dynamicdNames=newExpandoObject();foreach(varnameinnames){动态属性=newExpandoObject();财产ies.url="foo";properties.desc="酒吧";((IDictionary)dNames)。添加(名称,属性);}((IDictionary)d).Add("userTypes",dNames);vars=JsonSerializer.Create();varsb=newStringBuilder();使用(varsw=newStringWriter(sb)){s.Serialize(sw,d);}//反序列化样本//dynamicdummy=newExpandoObject();//varinstance=s.Deserialize(newStringReader(sb.ToString()),//dummy.GetType());//varfoo=instance.userTypes.BartSimpson.url;返回sb.ToString();注意:我还提供了用于反序列化的行(注释)以上是C#学习教程:DynamicobjectsinWCFnotpossible?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
