2015-01-07 7 views
1

Я пытаюсь отправить один динамический объект (тип ExpandoObject) из основного AppDomain в другой и, очевидно, столкнулся с исключением ExpandoObject is not marked as serializable.Отправить ExpandoObject в другой AppDomain

Кроме того, этот ExpandoObject имеет внутренний член словаря (Dictionary <object, dynamic>) для моих нужд.

Я уже пробовал преобразовывать ExpandoObject в Json, используя Json.Net (JObject), но внутренние словари не десериализуются как массивы, что дает мне исключение при попытке получить доступ к его свойствам.

Кто-нибудь знает, как сериализовать динамический объект и отправить его другому AppDomain?

Главная AppDomain Код:

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

exp.SetDynamicObj(dynamicObj); 

Alternative AppDomain Код:

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

ответ

2

Короче говоря, чтобы быть в состоянии передать динамический объект, с тем же поведением объекта Expando, в другую AppDomain , Мне пришлось создать новый класс, который наследует Dynamic Object и реализует все функции ISERializable и IDictionary.

Работал отлично.

+0

интересно, можете ли вы поделиться классом? –