我目前正在WPF中构建一组应用程序,他们将使用Prism作为框架。
他们将有很多共同之处,我的应用程序之间唯一会改变的就是将在Prism地区加载的内容。
所以我想提出一些共同点。
我没有成功的一件事是制作一个共同的应用程序"所有共同部分的实施:
目标是:
应用程序< - BaseApp(摘要)< - MySpecificAppplication(仅限代码)
目标是在BaseApplication中共享每个资源声明,共同的OnStartup
实现,以及在最终类中只有特定部分(在我的情况下,我想运行哪个Bootstrapper)。
以下是一些代码:
public abstract partial class BaseApp : Application //This class has also some XAML for resources loading, but pretty basic.
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
BaseBootstrapper clientBootstrapper = GetBootstrapper();
//Some initialization stuff
clientBootstrapper.Run();//This will cause Prism to load the correct first View(shell)
}
protected abstract BaseBootstrapper GetBootstrapper();
}
具体实施
public class MySpecificApp : BaseApp
{
protected override BaseBootstrapper GetBootstrapper(){
return //something ;
}
}
但是我建立了,我收到了一个错误:
程序不包含静态' Main'适合入境的方法 点
支持吗?
答案 0 :(得分:0)
使用默认模板在Visual Studio中创建新的WPF应用程序时,会得到一个继承自App
的{{1}}类。
编译器为您添加System.Windows.Application
方法,在此方法中创建Main()
类的实例,并调用InitializeComponent()方法来解析XAML调用Run()方法来启动应用程序。
如果您愿意,可以自己添加定义App
方法:
Main()
但显然你无法创建一个抽象类的实例。因此,如果[System.STAThreadAttribute()]
public static void Main()
{
App app = new App();
app.InitializeComponent();
app.Run();
}
包含XAML,则不应将其定义为抽象类。
替代方法是将XAML和BaseApp
方法移动到Main()
类,并在MySpecificApp
方法中创建此实例。