这很难用语言表达。
我有一个class LoginPage : Activity
,其中包含适用于Android的常见视图设置,例如OnCreate (Bundle bundle)
等。
但由于这是一个跨平台的项目,我想概括每个平台(iOS,Windows)的视图结构,所以我写了一个public abstract class LoginPage
,它只有像{{1}这样的方法。 }和abstract DoPageSetup()
等。
问题:
当我将abstract checkLogin()
放入我的核心项目(PCL)时,我可以从我的Android项目继承它,但由于C#中禁止多重继承,我不能继承我需要的Activity。
因为在一天结束时,我会从我的abstract class LoginPage
LoginPage
MainActivity
这样称呼StartActivity(typeof(LoginPage));
{/ 1}}
但已实施的LoginPage
需要遵循abstract class
的结构并继承自Activity
。
答案 0 :(得分:0)
在C#中,您要查找的字词是interface
。
您无法在接口定义中实现任何方法,但您可以在那里声明它们。
public interface LoginPage {
void doPageSetup();
void checkLogin();
//...
}
public class SpecificLoginPage : Activity, LoginPage {
void doPageSetup() {
}
void checkLogin() {
}
//...
}
答案 1 :(得分:0)
听起来你想要使用两个选项。
任何一个选项都取决于您的要求,而且确实没有对错选项。它将取决于您定位的平台以及您的应用目标。
答案 2 :(得分:0)
Saphire让我详细说明这个评论:
您可以考虑使用委派而不是继承。如果LoginPage类不知道实际UI的细节,那么它可能是MVC(或MPC)设计模式的Model部分,并且活动应该引用LoginPage而不是"是" 34;登录页面
Model-View-Presenter(MVP)是一种设计模式,通常适用于具有用户界面的应用程序。目的是将应用程序分成三个可以相对独立实现的角色:]
视图的作用是绘制屏幕并为用户提供点击或输入的位置。
模型的作用是保存域名或业务数据:
我建议的是,由于LoginPage与plaform无关,因此它可能正在扮演模型的角色。我将根据您的判断判断MVP模式是否适合您的设计。
This Wikipedia page: 提供了对模型 - 视图 - 演示者的更详细说明。