代码之家  ›  专栏  ›  技术社区  ›  Serhat Ozgel

哪一种方法更适合为插件提供实例?

  •  0
  • Serhat Ozgel  · 技术社区  · 17 年前

    我正在编写一个支持插件的应用程序。插件创建者负责为其创建的插件提供一些实例。提供这些实例有两种选择。

    备选案文1:

    public interface IGiveMe1 { INeed1 Need1 { set; } }
    
    public interface IGiveMe2 { INeed2 Need2 { set; } }
    
    public class MyPlugin : IGiveMe1, IGiveMe2
    {
        // This has to be parameterless
        MyPlugin() { ... }
    
        #region IGiveMe1 Members
    
        public INeed1 Need1 { set { ... } }
    
        #endregion
    
        #region IGiveMe2 Members
    
        public INeed2 Need2 { set { ... } }
    
        #endregion
    }
    

    插件创建者使用必需的无参数构造函数创建实例后,会查找插件类实现的接口。若插件实现了IGiveMe1,插件创建者将调用ined1的setter。同样适用于IGiveMe2.INeed2。

    Plugin writer编写的插件如下:

    public class MyPlugin
    {
        MyPlugin(INeed1 need1, INeed2 need2)
        {
            ...
        }
    }
    

    如果要为这个应用程序编写插件,您会选择哪种方法?

    1 回复  |  直到 14 年前
        1
  •  0
  •   Grzenio    17 年前

    我当然更喜欢第二种选择,因为它更简单、更清晰。插件的单元测试也将更加清晰。