"mock"[Serializable]
속성이 포함 된 CSShim이라는 PCL 지원 라이브러리를 만들었습니다. 이 라이브러리가 PCL 라이브러리에서 참조되는 경우 코드에 [Serializable]
을 사용할 수 있습니다. 정기적 .NET 데스크톱 응용 프로그램에서 PCL 라이브러리를 소비 할 때 다음
,의 PCL CSShim에 대한 참조는 소위 "bait-and-switch" 기술을 사용하여, CSShim의 .NET의 anolugue에 대한 참조로 대체됩니다 . .NET 아날로그는 [Serializable]
의 호출을 mscorlib에 [TypeForwardedTo]
을 사용하여 .NET 구현에 전달합니다.
CSShim는 .NET 프레임 워크 4.5을 대상으로, PCL 프로필 259에 대한 NuGet에서 현재 사용할 수있는 높은, 윈도우 8 이상, 윈도우 폰 8.1, 윈도우 폰 실버 8 이상, 자 마린 안드로이드와 자 마린 아이폰 OS.
CSShim 소스 코드는 Github에 있습니다. PCL 라이브러리가 .NET 4.5 이상을 대상으로하는 제한 사항 인 경우 이론적으로 PCL 라이브러리를 프로필 328과 같은 .NET Framework 4 프로필로 다시 지정할 수 있지만 다시 대상 지정은 "어려운 문제"일 수 있습니다. -)
또는 SerializableAttribute
과 관련된 유형의 "모의"구현 만 포함하는 사용자 고유의 PCL 지원 라이브러리를 만들고 유형 전달을 사용하여 지원 라이브러리의 .NET 아날로그를 작성하여에서 유효한 유형을 호출 할 수 있습니다. NET 코어 어셈블리. 나는이 접근 방법을보다 자세히 설명했다. this StackOverflow 대답.
정말 이진 객체로 직렬화해야합니까? 이 문제를 피할 수 있도록 JSON 또는 XML로 변환하면 용도에 맞게 사용할 수 있습니까? – mason
직렬화는 프록시 개체에 의해 자동으로 수행됩니다. 내 통제에서. –