#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 помогут вам устранить эту проблему.