Xamarin C#:为AppDelegate添加接口或类失败,求正确实现方式
解决AppDelegate继承/实现EmptyInterface、EmptyClass的问题
我来帮你逐个解决这两个报错问题:
一、处理EmptyInterface的CS0535报错
你遇到的CS0535错误是因为C#要求实现接口时,必须实现接口中定义的所有成员方法。报错提示你没实现EmptyInterface.EmptyInterfaceMethod1(),所以只需要在AppDelegate里添加这个方法的实现即可——哪怕是空实现也可以。
修改后的代码示例:
using Foundation; using UIKit; namespace testing { [Register("AppDelegate")] public class AppDelegate : UIApplicationDelegate, EmptyInterface { public override UIWindow Window { get; set; } // 必须实现接口要求的方法 public void EmptyInterfaceMethod1() { // 这里可以写你的业务逻辑,或者留空 } } }
如果这个接口还有其他未实现的方法,也要一并添加哦。
二、处理EmptyClass的CS1721报错
C#是单继承语言,一个类只能有一个直接基类。你已经让AppDelegate继承了UIApplicationDelegate,所以不能再继承另一个类EmptyClass,这就是CS1721错误的原因。
解决方法分两种情况:
- 如果
EmptyClass是你自己可控的代码,建议把它改成接口(比如IEmptyInterface),这样就可以像上面的方式实现它; - 如果无法修改
EmptyClass,可以用组合替代继承:在AppDelegate内部声明一个EmptyClass的实例,通过这个实例来调用它的方法。
示例代码(组合方式):
using Foundation; using UIKit; namespace testing { [Register("AppDelegate")] public class AppDelegate : UIApplicationDelegate { public override UIWindow Window { get; set; } // 用组合的方式持有EmptyClass实例 private EmptyClass _emptyClassInstance = new EmptyClass(); // 如果需要调用EmptyClass的方法,可以在这里封装 public void CallEmptyClassMethod() { _emptyClassInstance.SomeMethod(); } } }
内容的提问来源于stack exchange,提问作者user285594
相关产品推荐
相关产品推荐

