簡體   English   中英

使用Xamarin中的Android綁定使類實現接口

[英]Make a class implement a Interface using Android Bindings in Xamarin

我正在使用Xamarin開發一個Android應用程序。 對於此應用程序,我需要使用兩個.jar庫。 這些庫的作用完全相同 ,不同之處僅在於一個庫應在生產環境中使用,而另一個庫則供開發使用。

該應用程序的要求之一是,它必須具有用戶可以設置的配置,以指定環境(生產或開發)。

我需要與這些庫的類進行交互(我們將其稱為Foo )。 如果需要使用C#創建該類,則首先創建一個名為IFoo的接口,然后創建實現該接口的兩個類,然后我將使用工廠根據用戶設置的首選項創建正確的實例。 但是問題在於,在Java庫上,這兩個類都直接從Object繼承,因此我的調用代碼將無法按需使用抽象。

我想知道,是否有可能使用元數據轉換來修改生成的代碼以使類實現接口。 我可以通過修改生成的代碼來使其工作,但是每次我重新編譯項目時,都會錯過所做的修改。

您生成的類是partial 這意味着您可以輕松擴展它們。

產生的

[global::Android.Runtime.Register ("com/bar/baz/Foo", DoNotGenerateAcw=true)]
public partial class Foo : global::Java.Lang.Object {

}

加成

將此(Foo.cs)添加到文件夾Additions

public partial class Foo : IFoo 
{
    public void WhatEverFooDoes() 
    {
        // implement me
    }
}

IFoo也可以定義由生成的代碼實現的方法。 因此,如果簽名完全相同,則只需要從其中一個類中提取接口即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM