예,이 가능 프로젝트. 우리가 사용하는 접근 방식은 PCL에서 액세스 할 수없는 비 UI 유형 코드를 보유 할 별도의 iOS 및 Android 클래스 라이브러리를 만들고 해당 코드가 공유 PCL 계층에서 액세스 할 수있는 인터페이스를 구현하도록하는 것입니다. 예를 들어
:
가 공유 PCL 프로젝트에 ISocketHandler를 만들고 그것을 대해서 openConnection 메소드가 있습니다.
iOS.Framework 클래스 라이브러리를 만들고이 클래스에 ISocketHandler를 구현하는 iOSSocketHandler 클래스를 만들고 Xamarin iOS에서 소켓을 사용하는 플랫폼 전용 코드를 사용합니다. Android에서도 마찬가지입니다.
그러면 공유 코드가 ISocketHandler를 요청할 때마다 적절한 구현을 얻도록 종속성 삽입이 필요합니다. 당신과 같이 구현을 요청할 수 있습니다 그리고
IocContainer.GetContainer().RegisterType<ISocketHandler, iOSSocketHandler>();
를 공유 코드 :
다른 전략이있다
IocContainer.GetContainer().Resolve<ISocketHandler>();
달성 할 수있는 우리는 유니티를 사용하고, 우리의 Main.cs에서 우리는과 같이 등록합니다 당신이 원하지만, 이것은 우리가 대부분의 시나리오에서 사용하는 것입니다.
또한 직접 해보기 전에이 것을 확인하십시오. https://github.com/rdavisau/sockets-for-pcl