1

モノタッチ初心者です。最近、自分で開発したカスタム 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 
{} 

その後、mono でテスト アプリを作成して、新しく作成したライブラリをテストし、作成した値にアクセスできるようにしました。ただし、エラーが発生しました。

Console.WriteLine(GRG.sharedG.DriverVersion); -これはうまくいきます。適切な値を返します。

GRGPreferences pref = GRG.SharedG.Preferences; - エラー : 「ソース タイプから宛先タイプにキャストできません。」

Console.WriteLine(GRG.sharedG.Preferences.DebugEnabled); - エラー : 「ソース タイプから宛先タイプにキャストできません。」

誰でも私を助けてもらえますか?

4

1 に答える 1

1

ざっと見てみると、これがあなたが望むものだと思います:

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

あなたのタイプは、あなたが望むプロトコルを実装している間にGRGPreferences継承します。NSObject

于 2012-12-04T13:40:55.180 に答える