次の問題の回避策を探しています。 Javaでクラス階層を考えると次のように一般的なタイプを継承するJavaタイプへのXamarinのAndroidバインディング
public interface Bar<T> {
getValue<T>();
}
public abstract class BarImpl<T> implements Bar<T> {
}
public class Foo extends BarImpl<Double> {
@override
public Double getValue() {
// ..
}
}
Xamarin.Androidは、ラッパーを生成します。
// Now in C# land
public interface Bar
{
// Xamarin.Android omits T Value { get; }
}
public partial abstract class BarImpl : Bar
{
// Xamarin.Android omits abstract T Value { get; }
}
public partial class Foo : BarImpl
{
// COMPILE ERROR HERE. No method to override
public override java.lang.Double Value
{
get { /* ... */ }
}
}
は、今私は、ジェネリック医薬品の情報からJavaコンパイルストリップことはよく承知しているので、これは実際にはありません簡単な問題は解決するが、私はかどうかを知りたいん:
誰でもjava.androidに同様の問題に遭遇した
あなたはこのクラス階層をバインドするために巧妙なソリューションを採用しましたか?
私はFooの(バインドC#クラス)とベースのインタフェースを介してそれにアクセスするためのいくつかの方法(キャストはOKです)上の値のゲッターで唯一興味があります。
は部分的に生成されたクラスではありませんか? o0 –
はい、そうですが、Foo.Valueのオーバーライドを最初から削除するにはどうすればよいですか? –
ああ...あなたはノードFoo.Valueを完全に除外し、それを部分クラスで宣言していますか? ... –