Я создаю приложение Xamarin ios, которое использует SocketScan SDK Socket Mobile. Создал проект Binding для преобразования статической библиотеки в dll. Но не удалось создать экземпляр ISktScanObject с использованием метода SktClassFactory.CreateScanObject(). Экземпляр не создается полностью из-за System.MemberAccessException. Пожалуйста, смотрите ниже кодSystem.MemberAccessException при вызове SktClassFactory.CreateScanObject(); в SocketScan Xamarin iOS Binding Project
// A 1:1 of ApiHelper's Objective-C open: method
public void Open()
{
_deviceInfoList.Clear();
if (_noDeviceText != null) {
_deviceInfoList.Add (_noDeviceText, _noDeviceText);
}
if (_scanObjectReceived != null) {
SktClassFactory.ReleaseScanObject (_scanObjectReceived);
}
_scanObjectReceived = SktClassFactory.CreateScanObject(); //Two properties inside _scanObjectReceived are not getting created due to System.MemberAccessException.
Task.Run (() => InitializeScanAPIThread());
_scanApiOpen = true;
}
Ниже приведены сообщения об исключениях я получаю на отладку объекта _scanObjectReceived после строки _scanObjectReceived = SktClassFactory.CreateScanObject();
- Msg System.MemberAccessException: Невозможно создать экземпляр ScanAPI.ISktScanMsg, потому что он является абстрактным классом
- Property System.MemberAccessException: Невозможно создать экземпляр ScanAPI.SktScanProperty, потому что он является абстрактным классом
ApiDefinition для интерфейса ISktScanObject в проекте связывания, как показано ниже:
[Protocol, Model]
interface ISktScanObject {}
// @protocol ISktScanObject
[Protocol, Model]
[BaseType (typeof (NSObject))]
interface SktScanObject : ISktScanObject
{
// @required -(id<ISktScanMsg>)Msg;
[Abstract]
[Export ("Msg")]
ISktScanMsg Msg { get; }
// @required -(id<ISktScanProperty>)Property;
[Abstract]
[Export ("Property")]
SktScanProperty Property { get; }
}
ApiDefinition для Sk tClassFactory интерфейс в связывания проекта, как показано ниже:
[BaseType (typeof(NSObject))]
interface SktClassFactory
{
// +(id<ISktScanObject>)createScanObject;
[Static]
[Export ("createScanObject")]
ISktScanObject CreateScanObject();
// +(void)releaseScanObject:(id<ISktScanObject>)scanObj;
[Static]
[Export ("releaseScanObject:")]
void ReleaseScanObject (ISktScanObject scanObj);
// +(id<ISktScanApi>)createScanApiInstance;
[Static]
[Export ("createScanApiInstance")]
ISktScanApi CreateScanApiInstance();
// +(void)releaseScanApiInstance:(id<ISktScanApi>)scanApi;
[Static]
[Export ("releaseScanApiInstance:")]
void ReleaseScanApiInstance (ISktScanApi scanApi);
// +(id<ISktScanDevice>)createDeviceInstance:(id<ISktScanApi>)scanApi;
[Static]
[Export ("createDeviceInstance:")]
ISktScanDevice CreateDeviceInstance (ISktScanApi scanApi);
// +(void)releaseDeviceInstance:(id<ISktScanDevice>)deviceInstance;
[Static]
[Export ("releaseDeviceInstance:")]
void ReleaseDeviceInstance (ISktScanDevice deviceInstance);
}
Что нужно сделать, чтобы правильно инициализировать объект _scanObjectReceived. Заранее спасибо.
Я также сталкиваюсь с теми же проблемами при создании связанный с проектом для подключения кабеля Ethernet Redpark для проекта Xamarin.iOS. Любой знает, как это решить? это также на форуме Xamarin. – Ravi