我是Monotouch的新手。最近,我正在开发一个Monotouch绑定项目,它将自己开发的自定义iOS框架绑定到.NET框架库中。我遵循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
{}
之后,我在mono上创建了一个测试应用程序来测试新创建的库并访问我创建的值。但是,我收到了一个错误。
Console.WriteLine(GRG.sharedG.DriverVersion); - 这很好用。它返回正确的值。
GRGPreferences pref = GRG.SharedG.Preferences; - 错误:“无法从源类型转换为目标类型。”
Console.WriteLine(GRG.sharedG.Preferences.DebugEnabled); - 错误:“无法从源类型转换为目标类型。”
有人可以帮助我吗?
答案 0 :(得分:1)
快速浏览一下,我认为这就是你想要的:
[BaseType (typeof (NSObject))]
public interface GRGPreferences : GRGPreferencesProtocol {
在实施您想要的协议时,您的GRGPreferences
类型会从NSObject
继承。