现在我们来看看基于CAB的应用程序中非常重要的一个类。这个类可以认为是一个CAB应用的启动点。他就是FormShellApplication。
FormShellApplication的继承关系如下:
该类需要传入两个类型参数,一个是继承自WorkItem的类(如果不需要通过重载WorkItem的OnRunStarted方法来实现更多处理,这里可以直接使用WorkItem),一个是继承自Form的窗体。
public class Program:FormShellApplication<MyWorkItem,ShellForm>
通常我们在Main方法中调用其Run方法,执行Run方法会初始化许多应用程序信息。可以通过override来重写或增加FormShellApplication的方法处理。
FormShellApplication的初始化包括(可以通过子类重载FormShellApplication的相关方法来判断其执行顺序)以下步骤:
1. RegisterUnhandledExceptionHandler |
2. 创建 Build strategies |
3. 创建顶级 WorkItem |
4. 创建和初始化 Visualizer |
5. 添加 services |
6.创建Shell |
CAB提供的标准服务如下,开发人员可以在此基础上进行扩展:
ü SimpleWorkItemActivationService
ü FileCatalogModuleEnumerator
ü WindowsPrincipalAuthenticationService
ü ModuleLoaderService
ü DataProtectionCryptographyService
ü TraceSourceCatalogService
ü CommandAdapterMapService
ü WorkItemExtensionService
ü WorkItemTypeCatalogService
ü ControlActivationService
执行了FormShellApplication的子类的Run方法,一个CAB应用程序就算是启动了。随后就是根据自己的需要来执行WorkItem了。