Xamarin Forms:如何实现特定于平台的代码

Xamarin Forms: how to implement platform specific code

我有一个 Xamarin Forms 项目,我希望 Android、iOS 和 WinPhone 作为目标。 (现在我只看Android。)

我在播放音频时遇到问题,我想我需要在每台设备上以不同的方式实现它。

我开始在共享项目app.cs中添加这段代码

#if __ANDROID__
    MediaPlayer _player;
    _player = MediaPlayer.Create(this, Resources.Raw.bear); // "Resources.Raw.bear");
    _player.Start();
#endif

但发现我不能真正引用bear.wav,所以我想我必须为每个project/platform添加bear.wav,并单独处理播放代码。 (另见 http://developer.xamarin.com/recipes/android/media/audio/play_audio/

遗憾的是,我找不到关于如何执行此操作的示例或任何文档。

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/custom-renderer/ 是我能找到的最接近的,但它似乎高度关注渲染器。

我想我会做的是在共享项目中定义一个抽象class(一些简单的class,只是用void play方法),并使用它,并且在每个平台项目中都有具体的实现。怎么办?

看起来像 Write device platform specific code in Xamarin.Forms 回答问题 - 这与其说是一个 Xamarin Forms 问题,不如说是一个 Visual Studio 共享项目问题,可以通过创建一个 interface/abstract class 然后为每个平台实现它并注入来解决实施。