Класс не может быть приведен к интерфейсу типа NSObject в библиотеке привязки C # Xamarin IOS

#c# #xamarin.ios #objective-sharpie

#c# #xamarin.ios #objective-sharpie

Вопрос:

Я создал библиотеку привязки с помощью objective C framework, есть класс, который расширяет тип другого интерфейса NSObject (KsEvent), в Xamarin IOS при получении ошибки во время приведения не удается преобразовать тип KSMEvent в KsEvent.

ApiDefinitions:

 // @interface KSMEvent : NSObject <KsEvent> 
    [BaseType(typeof(NSObject))]
    interface KSMEvent : KsEvent
    {
        // @property NSDictionary * _Nullable userInfo;
        [NullAllowed, Export("userInfo", ArgumentSemantic.Assign)]
        NSDictionary UserInfo { get; set; }

        // -(instancetype _Nonnull)initWithName:(NSString * _Nonnull)name object:(id _Nullable)object userInfo:(NSDictionary * _Nullable)userInfo;
        [Export("initWithName:object:userInfo:")]
        IntPtr Constructor(string name, [NullAllowed] NSObject @object, [NullAllowed] NSDictionary userInfo);
    }

[BaseType(typeof(NSObject))]
    [Protocol, Model]
    interface KsEvent
    {
        // @required -(NSString * _Nonnull)getName;
        [Abstract]
        [Export("getName")]     
        string Name { get; }

        // @required -(id _Nullable)getObject;
        [Abstract]
        [NullAllowed, Export("getObject")]      
        NSObject Object { get; }

        // @required -(NSDictionary * _Nullable)getUserInfo;
        [Abstract]
        [NullAllowed, Export("getUserInfo")]        
        NSDictionary UserInfo { get; }
    }

  

Xamarin IOS:

 KSMEvent kSMEvent = new KSMEvent();
KsEvent ksEvent = (KsEvent)kSMEvent;
  

** Ошибка: не удается преобразовать тип KSMEvent в KsEvent . **

Комментарии:

1. Привет, попробуйте KsEvent ksEvent = new KsEvent(); kSMEvent ksMEvent = (kSMEvent )ksEvent ; проверить, будет ли это работать.

2. Привет @JuniorJiang-MSFT, в этом сценарии вы преобразуете KsEvent в KSMEvent, но мне нужно преобразовать KSMEvent в KsEvent, и я тоже попробовал это, он показывает ошибку невозможно преобразовать KsEvent в KSMEvent.

3. Вы правы. Теперь этот способ также не может работать. Я продолжу исследовать его, если здесь появятся хорошие новости.

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