gpt4 book ai didi

c# - 将附加参数传递给 JavascriptSerializer

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:53 26 4
gpt4 key购买 nike

我将 JavascriptSerializer 与自定义 JavascriptConverter 一起使用,如下所示:

public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
SomeObjectModel TheObject = obj as SomeObjectModel;
Dictionary<string, object> OutputJson = new Dictionary<string, object>();

OutputJson.Add("SomeKey", SomeObjectModel.SomeProperty);

return OutputJson;
}

现在我希望能够在运行时动态更改 SomeKey,所以我想创建一个键字典,将这个字典传递给序列化程序,然后执行如下操作:

OutputJson.Add(TheJsonDictionary.SomeKey, SomeObjectModel.SomeProperty);

但是,当我像这样向函数调用添加参数时:

public override IDictionary<string, object> Serialize(Dictionary<string, string> TheJsonDictionary, object obj, JavaScriptSerializer serializer)

我在编译时收到一条错误消息。现在我知道为什么我会收到这个错误(抽象方法定义了 2 个参数,我传递了 3 个),我想知道如何解决这个问题,以便我可以传入一个字典来对键进行编码。

谢谢。

最佳答案

我想唯一的解决方法是子类化 JavaScriptSerializer 并重新实现 Serialize 方法以接受任意 TheJsonDictionary 字典:

class CustomJavaScriptSerializer : JavaScriptSerializer
{
public Dictionary<string, string> TheJsonDictionary { get; private set; }

public string Serialize(object obj, Dictionary<string, string> TheJsonDictionary = null)
{
this.TheJsonDictionary = TheJsonDictionary;
return base.Serialize(obj);
}
}

现在在您的自定义转换器中,您可以将序列化程序对象转换回 CustomJavaScriptSerializer 并获取键的自定义字典:

public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
{
var TheJsonDictionary = (serializer as CustomJavaScriptSerializer).TheJsonDictionary;

// rest of method
}

关于c# - 将附加参数传递给 JavascriptSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14322020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com