2015-01-07 9 views
1

하나의 동적 객체 (유형 ExpandoObject)를 기본 AppDomain에서 다른 AppDomain으로 보내려고하고 있는데, 분명히 ExpandoObject is not marked as serializable 예외가 있습니다.ExpandoObject를 다른 AppDomain으로 보내기

또한이 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); 

대체 응용 프로그램 도메인 코드 : 한마디로

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

답변

2

는 다른 응용 프로그램 도메인에의는 Expando 개체의 동일한 행동으로, 동적 객체를 전달할 수 있어야합니다 , 동적 객체를 상속하고 ISerializable 및 IDictionary 함수를 모두 구현하는 새로운 클래스를 만들어야했습니다.

완벽하게 작동했습니다.

+0

흥미롭지 만 수업을 공유 할 수 있습니까? –