MonoTouch的结合 - “不能从源类型转换为目标类型。”(Monotouch binding

2019-10-17 10:46发布

我对MonoTouch的新手。 最近,我的工作结合自定义的iOS框架,开发自己变成一个.NET框架库MonoTouch的结合项目。 我遵循Xamarin的指示,但现在我有不能被解决的问题。 这是我的代码。

**HEADER FILE IN OBJECTIVE C**

*GRG.h*
@interface GRG: NSObject {} 

// Shared instance 
+ (GRG*) sharedG; 

// Preference class 
@property (nonatomic, readonly) GRGPreferences  *preferences; 

// Driver version 
@property (readonly,copy) NSString* driverVersion; 

// More parameters... 
@end 

*GRGPreferences.h*
@interface GRGPreferences : NSObject <GRGPreferencesProtocol>{} 

// Enable DEBUG 
@property BOOL debugEnabled; 

// More parameters... 
@end 

*GRGPreferencesProtocol.h*
@protocol GRGPreferencesProtocol <NSObject>  

// More parameters... 
@end 

我将我的头文件到这

**API DEFINITION**

[BaseType (typeof (NSObject))] 
interface GRG 
{ 
        [Static][Export("sharedG")] 
        GRG SharedG{ get; } 

        [Export("preferences")] 
        GRGPreferences Preferences{ get;} 

        [Export("driverVersion", ArgumentSemantic.Copy)] 
        string DriverVersion {get;} 
} 

[BaseType (typeof (GRGPreferencesProtocol))] 
public interface GRGPreferences 
{ 
        [Export("debugEnabled")] 
        bool DebugEnabled{ get; set;} 
} 

[BaseType(typeof (NSObject))] 
[Model] 
public interface GRGPreferencesProtocol 
{} 

在那之后,我创建了单一个测试应用程序测试新创建的库并访问我创造的价值。 但是,我得到了一个错误。

Console.WriteLine(GRG.sharedG.DriverVersion); - 这工作得很好。 它返回正确的值。

GRGPreferences PREF = GRG.SharedG.Preferences; - 错误:“不能从源类型转换为目标类型。”

Console.WriteLine(GRG.sharedG.Preferences.DebugEnabled); - 错误:“不能从源类型转换为目标类型。”

谁能帮帮我吗?

Answer 1:

从快看,我认为这是你想要的东西:

[BaseType (typeof (NSObject))] 
public interface GRGPreferences : GRGPreferencesProtocol {

GRGPreferences类继承自NSObject同时实现你想要的协议。



文章来源: Monotouch binding - “Cannot cast from source type to destination type.”