1

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

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

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

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

主 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;
}
...
4

1 回答 1

2

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

工作完美。

于 2015-01-19T21:19:08.733 回答