我正在使用Xamarin开发Android应用程序。对于这个应用程序,我需要使用两个 .jar 库。这些库与完全相同,不同之处仅在于一个应该在生产环境中使用,另一个用于开发用途。
该应用程序的一个要求是,它必须具有用户可以设置的配置,以指定环境(生产或开发)。
我需要与这些库中的一类进行交互(我们称之为Foo
)。如果我需要使用C#创建该类,我将首先创建一个名为IFoo
的接口,然后创建实现该接口的两个类,然后我将使用 factory 来创建正确的实例基于用户设置的偏好。但问题是,在 Java 库中,这两个类都直接从Object
继承,因此我的调用代码将无法使用我想要的抽象。
我想知道,是否可以使用元数据转换来修改生成的代码,以使类实现接口。我能够通过修改生成的代码使其工作,但每次重新编译项目时,我都会错过修改。
答案 0 :(得分:1)
您生成的课程为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也可以定义由生成的代码实现的方法。因此,如果签名完全相同,您只需要从其中一个类中提取接口。