【发布时间】:2015-02-10 02:38:24
【问题描述】:
我查看了有关 java 内部匿名类的其他一些答案,但我正在寻找特定于 C# 的 Xamarin 实现的内容。
我正在努力将 openCamera 项目 (http://opencamera.sourceforge.net/) 从 java 移动到 Xamarin 中的 C#。
我正在努力找出处理 java 匿名内部类的最佳方法。
我正在处理的 Java 代码 sn-p(其中之一)是这样的:
orientationEventListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int orientation) {
MainActivity.this.onOrientationChanged(orientation);
}
};
在 Xamarin 可识别的 C# 代码中如何最好地表达?
如果我使用 Tangible Software 的 Java to C# 程序,它会创建一个名为“OrientationEventListenerAnonymousInnerClassHelper”的帮助类——这很酷——不幸的是,它无法编译。我很乐意为此编写代码,但一定有一种巧妙的方式让我无法理解。正如我所说,我会拥有很多。
Tangible Software 生成的代码如下所示:
首先它用这样的 using 语句声明它:
using OrientationEventListener = android.view.OrientationEventListener;
然后它创建这个来处理匿名内部类:
private class OrientationEventListenerAnonymousInnerClassHelper : OrientationEventListener
{
private readonly MainActivity outerInstance;
public OrientationEventListenerAnonymousInnerClassHelper(MainActivity outerInstance, net.opencamera.MainActivity this) : base(this)
{
this.outerInstance = outerInstance;
}
public override void onOrientationChanged(int orientation)
{
outerInstance.onOrientationChanged(orientation);
}
}
Xamarin 工作室抱怨使用 net.opencamera.MainActivity this, FWIW。
由于 Java 程序员喜欢他们的匿名内部类,我将有很多这样的工作要做。这方面的最佳做法是什么?
谢谢!
【问题讨论】: