2016-12-19 15 views
0

iOSとAndroidで別々の実装が必要なXamarinプロジェクトに取り組んでいます。私は、共有プロジェクトにinterfaceがあると思っていて、iOSとAndroidプロジェクトで実装されています。しかし、私はそれをどうやって行うのか分かりません。xamarinのiOSとAndroidの同じクラスへの実装の分離

これは私がこれまで試してみましたものですが、コンパイラは私にMyPopup_iOSのcallMe方法、を「オーバーライドする適切な方法」でエラーがスローされます。そして、私はMyPopup_iOS.csファイルを共有プロジェクトに参照していないので、どうすればこのメソッドを呼び出せますか?

ファイル:

public class MyPopup_IOS : MyPopup 
{ 
    public override void callMe() 
    { 
    }  
} 
+0

オーバーライドは、インターフェイスではなくベースクラスで宣言されたメソッドです。私はDI、またはBaitとSwitchのパターンを使って見たいと思うと思う:http://log.paulbetts.org/the-bait-and-switch-pcl-trick/ – Jason

答えて

1

1)変更インタフェースMyPopup抽象クラスにMyProject.iOSでMyProjectとでMyPopup.cs

public interface MyPopup 
{ 
    void callMe(); 
} 

ファイルMyPopup_IOS

public abstract class MyPopup 
{ 
    void callMe(); 
} 

2)ボーを変更するID CallMe()抽象的な

public abstract void CallMe(); 

〜3)の方法

public class MyPopup_IOS : MyPopup 
{ 
    public override void callMe() 
    { 
    }  
} 

4ご使用のプラットフォーム固有のクラスのオーバーライドで)今、あなたは、基本クラスからそのメソッドを呼び出すことができます。プラットフォーム固有の実装を起動します

public abstract class MyPopup 
{ 
    public abstract void callMe(); 
    void doWork() { 
     callMe(); 
    } 
} 
関連する問題