2

我想要做的是采用对象构造(例如,实体框架对象),然后将其转换为动态对象(认为 JSON.Net JObject 可能是最合适的),并使用附加属性扩展所述对象用于发送到客户端,或视图模板。

dynamic model = JS.ToJObject(myConcreteInstance);
model.AdditionalValue = "I need this stuff on the client... ";

这就是我所拥有的,它有效,但宁愿没有 try/catch。

//JS.ToJObject
public static JObject ToJObject(object input)
{
    try {
        //anonymous types throw an exception here
        //    Could not determine JSON object type for type f__AnonymousType ...
        return new JObject(input);
    } catch(Exception) {
        //fallback to serialize/deserialize, which seems wasteful
        var txt = JsonConvert.SerializeObject(
            input
            ,new IsoDateTimeConverter()
            ,new DataTableConverter()
            ,new DataSetConverter()
        );
        return JObject.Parse(txt);
    }
}
4

0 回答 0