【问题标题】:Send ExpandoObject to another AppDomain将 ExpandoObject 发送到另一个 AppDomain
【发布时间】:2015-01-07 20:35:53
【问题描述】:

我正在尝试将一个动态对象(类型 ExpandoObject)从主 AppDomain 发送到另一个,显然遇到了 ExpandoObject is not marked as serializable 异常。

此外,这个 ExpandoObject 有内部字典成员 (Dictionary <object, dynamic>) 可以满足我的需要。

我已经尝试使用 Json.Net (JObject) 将 ExpandoObject 转换为 Json,但内部字典未反序列化为数组,在尝试访问其属性时出现异常。

有谁知道如何序列化动态对象并将其发送到另一个 AppDomain?

主应用域代码:

dynamic dynamicObj = expBuilder.GenerateDynamicObj();
ExpressionInMemory exp = (ExpressionInMemory)ExpressionDomain.CreateInstanceAndUnwrap(Assembly.GetExecutingAssembly().FullName, typeof(ExpressionInMemory).FullName);

exp.SetDynamicObj(dynamicObj);

替代AppDomain代码:

...
public void SetDynamicObj(dynamic obj)
{
  this._dynamicObj = obj;
}
...

【问题讨论】:

    标签: c# .net appdomain expandoobject dynamicobject


    【解决方案1】:

    简而言之,为了能够将具有与 Expando 对象相同行为的动态对象传递给另一个 AppDomain,我必须创建一个继承动态对象并实现所有 ISerializable 和 IDictionary 函数的新类。

    完美运行。

    【讨论】:

    • 有意思,可以分享一下课程吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多