如何在Interface.NewProxyInstance中传递接口对象作为参数Class [] interFaces?

时间:2015-08-20 17:55:58

标签: c# android xamarin

我正在尝试使用PreferenceManager类中的Reflection设置onTreePreferenceClickListener。

public  static void SetOnPreferenceTreeClickListener (PreferenceManager manager, IOnPreferenceTreeClickListener listener)
    {
        try {

            Class cl = Java.Lang.Class.FromType (typeof(PreferenceManager));
            Field onPreferenceTreeClickListener = cl.GetDeclaredField ("mOnPreferenceTreeClickListener");
            onPreferenceTreeClickListener.Accessible = true;
            if (listener != null) {
                Java.Lang.Object proxy = Proxy.NewProxyInstance (manager.Class.ClassLoader, new Class[] {Class.FromType(typeof(IOnPreferenceTreeClickListener)) }, new MyInvocationHandler (listener));
                onPreferenceTreeClickListener.Set (manager, proxy);
            } else {
                onPreferenceTreeClickListener.Set (manager, null);
            }
        } catch (System.Exception e) {
            Console.WriteLine (TAG + " Couldn't set PreferenceManager.mOnPreferenceTreeClickListener by reflection " + e.Message);
        }
    }

我试图从listener.GetType()获取类对象。

但它抛出异常,或者它不是从java或IllegalArgument派生的。

0 个答案:

没有答案