我正在研究Objective-C协议和委托,并试图在Xamarin.iOS中实现自定义协议。我在Xamarin文档中关注“绑定协议”的示例
[BaseType (typeof(NSObject))]
[Model][Protocol]
public interface INITableViewCellDelegate {
}
由于某种原因我找不到BaseType属性。我不能参考它。我目前的项目名称空间列表是:
using System;
using System.Drawing;
using MonoTouch.Foundation;
using MonoTouch.UIKit;
using MonoTouch.CoreGraphics;
using MonoTouch.ObjCRuntime;
我期待它应该在System或MonoTouch.ObjCRuntime下。任何人都能解释一下吗?我已经检查了StackOverflow上涉及绑定协议的其他问题,很多例子显示了相同的MonoTouch使用。
谢谢
答案 0 :(得分:6)
确保您使用的是iOS绑定项目
答案 1 :(得分:0)
[BaseType]
属性仅用于“iOS绑定项目”类型的项目中,并且在运行时不可用。
因此,请确保您正在执行“iOS绑定项目”,该项目将由btouch
工具处理,并将为您的本机库生成绑定。
答案 2 :(得分:0)
我遇到了同样的问题,因为我只是盲目地将Sharpie创建的文件添加到我的项目中。
创建新的iOS绑定库时,它会创建两个文件:ApiDefinition.cs
和Structs.cs
。除了与项目名称匹配的命名空间外,它们都是空的。
当Sharpie运行时,它会创建两个文件:ApiDefinitions.cs
和StructsAndEnums.cs
。这些是纯定义,在命名空间中不存在。不要将这些文件添加到项目中。代替;
ApiDefinitions.cs
的所有内容并将其粘贴到ApiDefinition.cs
中的空名称空间中。StructsAndEnums.cs
的所有内容并将其粘贴到Structs.cs
中的空名称空间中。希望它现在应该构建。