Исключение: Foundation.You_Should_Not_Call_base_In_This_Method

Я пытаюсь реализовать устройство чтения карт IDtech Unimag. У меня уже есть библиотека связывания C# для нативного кода UniMag. Для создания объекта unimag я пишу ниже приведенный код.

_uniMagReader = new uniMag ();
//_uniMagReader.ReaderType = BrushfireUniMagBinding.UmReader.Shuttle;
_uniMagReader.SetAutoAdjustVolume(true);
_uniMagReader.SetSwipeTimeoutDuration (0);
_uniMagReader.SetAutoAdjustVolume (true);
_uniMagReader.StartUniMag (true);

На третьей строке _uniMagReader.SetAutoAdjustVolume(true)Я получаю это исключение:

Foundation.You_Should_Not_Call_base_In_This_Method: исключение типа "Foundation.You_Should_Not_Call_base_In_This_Method".

Я понятия не имею, почему я получаю это исключение. Я искал то же исключение, но не понял, что на самом деле означал ответ.

Мой конвертированный файл Unimag выглядит так:

using Foundation;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace BrushfireUniMagBinding
{
    [Model, Register ("uniMag", false)]
    public class uniMag : NSObject
    {
        //
        // Properties
        //
        [CompilerGenerated]
        public virtual UmReader ReaderType {
            [Export ("readerType")]
            get;
            [Export ("setReaderType:")]
            set;
        }

        //
        // Constructors
        //
        [Export ("init"), EditorBrowsable (EditorBrowsableState.Advanced), CompilerGenerated]
        public uniMag ();

        [EditorBrowsable (EditorBrowsableState.Advanced), CompilerGenerated]
        protected uniMag (NSObjectFlag t);

        //
        // Static Methods
        //
        [Export ("enableLogging:"), CompilerGenerated]
        public static void EnableLogging (bool enable);

        [Export ("SDK_version"), CompilerGenerated]
        public static string SDK_version ();

        //
        // Methods
        //
        [Export ("autoDetect:"), CompilerGenerated]
        public virtual void AutoDetect (bool autoDetect);

        [Export ("cancelSwipe"), CompilerGenerated]
        public virtual void CancelSwipe ();

        [Export ("cancelTask"), CompilerGenerated]
        public virtual void CancelTask ();

        [Export ("closeConnection"), CompilerGenerated]
        public virtual void CloseConnection ();

        [Export ("getAuthentication"), CompilerGenerated]
        public virtual UmRet GetAuthentication ();

        [Export ("getConnectionStatus"), CompilerGenerated]
        public virtual bool GetConnectionStatus ();

        [Export ("getFlagByte"), CompilerGenerated]
        public virtual NSData GetFlagByte ();

        [Export ("getRunningTask"), CompilerGenerated]
        public virtual UmTask GetRunningTask ();

        [Export ("getVolumeLevel"), CompilerGenerated]
        public virtual float GetVolumeLevel ();

        [Export ("getWave"), CompilerGenerated]
        public virtual NSData GetWave ();

        [Export ("isReaderAttached"), CompilerGenerated]
        public virtual bool IsReaderAttached ();

        [Export ("proceedPoweringUp:"), CompilerGenerated]
        public virtual UmRet ProceedPoweringUp (bool proceedPowerUp);

        [Export ("promptForConnection:"), CompilerGenerated]
        public virtual void PromptForConnection (bool prompt);

        [Export ("requestSwipe"), CompilerGenerated]
        public virtual UmRet RequestSwipe ();

        [Export ("sendCommandClearBuffer"), CompilerGenerated]
        public virtual UmRet SendCommandClearBuffer ();

        [Export ("sendCommandCustom:"), CompilerGenerated]
        public virtual UmRet SendCommandCustom (NSData cmd);

        [Export ("sendCommandDefaultGeneralSettings"), CompilerGenerated]
        public virtual UmRet SendCommandDefaultGeneralSettings ();

        [Export ("sendCommandDisableErrNotification"), CompilerGenerated]
        public virtual UmRet SendCommandDisableErrNotification ();

        [Export ("sendCommandDisableExpDate"), CompilerGenerated]
        public virtual UmRet SendCommandDisableExpDate ();

        [Export ("sendCommandDisableForceEncryption"), CompilerGenerated]
        public virtual UmRet SendCommandDisableForceEncryption ();

        [Export ("sendCommandEnableAES"), CompilerGenerated]
        public virtual UmRet SendCommandEnableAES ();

        [Export ("sendCommandEnableErrNotification"), CompilerGenerated]
        public virtual UmRet SendCommandEnableErrNotification ();

        [Export ("sendCommandEnableExpDate"), CompilerGenerated]
        public virtual UmRet SendCommandEnableExpDate ();

        [Export ("sendCommandEnableForceEncryption"), CompilerGenerated]
        public virtual UmRet SendCommandEnableForceEncryption ();

        [Export ("sendCommandEnableTDES"), CompilerGenerated]
        public virtual UmRet SendCommandEnableTDES ();

        [Export ("sendCommandGetNextKSN"), CompilerGenerated]
        public virtual UmRet SendCommandGetNextKSN ();

        [Export ("sendCommandGetSerialNumber"), CompilerGenerated]
        public virtual UmRet SendCommandGetSerialNumber ();

        [Export ("sendCommandGetSettings"), CompilerGenerated]
        public virtual UmRet SendCommandGetSettings ();

        [Export ("sendCommandGetVersion"), CompilerGenerated]
        public virtual UmRet SendCommandGetVersion ();

        [Export ("sendCommandResetBaudRate"), CompilerGenerated]
        public virtual UmRet SendCommandResetBaudRate ();

        [Export ("sendCommandSetPrePAN:"), CompilerGenerated]
        public virtual UmRet SendCommandSetPrePAN (int prePAN);

        [Export ("setAutoAdjustVolume:"), CompilerGenerated]
        public virtual void SetAutoAdjustVolume (bool b);

        [Export ("setAutoConnect:"), CompilerGenerated]
        public virtual void SetAutoConnect (bool autoConnect);

        [Export ("setCmdTimeoutDuration:"), CompilerGenerated]
        public virtual bool SetCmdTimeoutDuration (int seconds);

        [Export ("setDeferredActivateAudioSession:"), CompilerGenerated]
        public virtual void SetDeferredActivateAudioSession (bool b);

        [Export ("setFirmwareFile:"), CompilerGenerated]
        public virtual bool SetFirmwareFile (string location);

        [Export ("setSwipeTimeoutDuration:"), CompilerGenerated]
        public virtual bool SetSwipeTimeoutDuration (int seconds);

        [Export ("setWavePath:"), CompilerGenerated]
        public virtual bool SetWavePath (string path);

        [Export ("startUniMag:"), CompilerGenerated]
        public virtual UmRet StartUniMag (bool start);

        [Export ("updateFirmware:"), CompilerGenerated]
        public virtual UmRet UpdateFirmware (string encrytedBytes);

        [Export ("updateFirmware2:stringWithFile:"), CompilerGenerated]
        public virtual UmRet UpdateFirmware2 (string stringWithFile, string path);
    }
}

Кто-нибудь может направить меня в этой ситуации?

Заранее спасибо.

1 ответ

Так что исключение You_Should_Not_Call_base_In_This_Method означает, что метод SetAutoAdjustVolume(bool) называет что-то вроде Base.SetAutoAdjustVolume(bool) в его родительском методе в связанной библиотеке.

Вам, вероятно, придется переопределить SetAutoAdjustVolume(bool) метод, чтобы убедиться, что он не вызывает Base,

[Export ("setAutoAdjustVolume:"), CompilerGenerated]
public virtual void SetAutoAdjustVolume (bool b);

По сути, сгенерированная компилятором привязка к этому методу должна быть переопределена, прежде чем вы сможете использовать ее в своем коде.

Вы можете создать новый класс, производный от uniMag и переопределить SetAutoAdjustVolume способ обеспечить base не называется например.

Другие вопросы по тегам