首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 软件频道>Visual C#插件构架实战补遗

Visual C#插件构架实战补遗

2004-08-08 00:04作者:Jack H Hansen出处:csdn责任编辑:方舟

  2. IConnectableObject

public interface IConnectable {
 // application 为插件所属的主框架对象。若为null则表示插件本身就是主框架
 ConnectionResult Connect( object application );
 ExtendibleVersionInfo VersionInfo { get; }
 void OnDestory();
 void OnLoad();
 void Run();
}

public enum ConnectionResult {
 Connection_Success ,
 Connection_Failed
}

public class ExtendibleVersionInfo {
 private ExtendibleVersionInfo() {}
 public ExtendibleVersionInfo( string name , string version , string copyright ) { // Omitted }

 public ExtendibleVersionInfo(string name,int version1,int version2,int version3,string copyright) { // Omitted }

 public int PrimaryVersion { get { return _Version1; } }
 public int SecondaryVersion { get { return _Version2; } }
 public int BuildVersion { get { return _Version3; } }
 public string Name { get { return _Name; } }
 public string VersionString { get { // Omitted } }
 public string Copyright { get { return _Copyright; } }
 private string _Name;
 private int _Version1 = 1;
 private int _Version2 = 0;
 private int _Version3 = 0;
 private string _Copyright;
 public static ExtendibleVersionInfo Empty = new ExtendibleVersionInfo();
}

  所有可连接的对象必须实现这个接口。这是所有 Application Frame Level 中类的鼻祖。

  3. IExtendible

public interface IExtendible {
 IConnectable GetLatestVersion();
 IConnectable QuerySpecifiedVersion( ExtendibleVersionInfo version );
 ExtendibleVersionInfo[] EnumerateVersions();
}

  4. 使用类工厂创建应用程序和插件的最新版本

  我们的主程序以及插件会设计成 internal class 。程序只输出一个工厂类,用户界面通过调用 IExtendible 接口的 GetLatestVersion() 方法获得这些用来完成实际任务的对象的实例,并把它们显示出来。或者,也可以枚举所有的版本,让用户来挑选所需要版本。

  5. 可扩展性

  不得不承认,这样的方式可扩展性仍不是很强。程序需要升级时同时需要修改提供给用户的工厂类(虽然接口不变)。为了实现更好的可扩展性,可以把简单工厂模式转换为工厂方法模式。
共2页。 9 1 2

关注此文的读者还看过:

返回软件频道首页

共2页。 上一页12

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络