参考借鉴ABP中提供的扩展性

持续更新....

实现一:

定义一个接口

public interface IMessageWriter
{string Write();
}

定义一个实现,这个实现是要被另外的一个实现类代替的:

public class ConsoleMessageWriter : IMessageWriter, ITransientDependency
{public string Write(){return "ConsoleMessageWriter.Write";}
}

替代的实现类:

[Dependency(ReplaceServices = true)] // 调用了asp.net core中的services.replace实现
public class ReplaceMessageWriter : IMessageWriter, ITransientDependency
{public string Write(){return "ReplaceMessageWriter.Write";}
}

这里的ITransientDependency接口Dependency特性都是ABP中的。

实现二:

接口定义:

public interface IBrandProvider
{string AppName { get;  }
}

默认实现类:

public class DefaultBrandProvider : IBrandProvider, ITransientDependency
{public DefaultBrandProvider() { }public virtual string AppName { get => "DefaultBrandProvider"; }
}

替换类:

[Dependency(ReplaceServices = true)] //如果没有此特性,那么接口的实现类有两个。
public class ReplaceBrandProvider : DefaultBrandProvider
{public override string AppName { get => "ReplaceBrandProvider"; }
}

实现三:

参考:扩展与解耦:Option模式与依赖注入结合

程序如何实现可扩展性相关推荐

  1. Linux下C程序的可扩展性.

    What I write, what I lose. 以下为个人关于Linux下C程序的可扩张性的一点想法. 可扩展性的应用场景: 1. 有两个项目都需要使用的一个相同功能的程序, 但是有些要求不一样 ...

  2. 桌面应用程序 azure_Azure Logic应用程序用例–黑色星期五

    桌面应用程序 azure This blog gives an overview of how Azure Serverless technologies came to rescue when th ...

  3. 设计可扩展的应用程序

    Eric E. Allen (eallen@cs.rice.edu), 博士研究生候选人, Rice University 2001 年 9 月 04 日 在 诊断 Java 代码 的这个部分和即将到 ...

  4. 2018年最佳45 APM(应用程序性能监视和管理)工具

    应用程序性能管理(APM)工具收集和监视大量数据,以管理软件应用程序的性能和可用性.APM工具并不缺乏,为您的项目选择一个可能很麻烦. 这里列出了45种应用程序监控工具及其下载链接和主要功能. 1)新 ...

  5. CAD二次开发加载自定义模块程序流程

    (1)启动CAD: acad.exe 脚本1 脚本1中通常包含命令内容和顺序 (1)使用CAD自身命令初始化: 初始化CAD的窗口内容和风格,如但文档试图:初始化缩放比例等等: (2)arxload ...

  6. 编程精粹 --Microsoft编写优质无错C程序秘诀

    献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...

  7. 如何编写可测试的golang代码

    每次在开发之前,我都会考虑写好单元测试,但是随着开发的进行,就会发现事情没有这么简单,因为更多时候项目中间夹杂着很多的数据库操作,网络操作,文件操作等等,每次涉及到有这些操作的单元测试,都要花费很大的 ...

  8. Azure 执行模型

    最后更新时间(英文版):01/20/2015 最后更新时间(中文版):04/11/2015 Azure 提供了用于运行应用程序的不同执行模型.每种模型提供一组不同服务,而你选择哪种模型完全取决于你要做 ...

  9. day3 python 函数

    常犯的错误: IndentationError:expected an indented block说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行... 函数是指一 ...

最新文章

  1. 图表2------沪深300指数图+收盘价的EMD分量图+PCA后的特征累计贡献率表+预测模型评估指标公式表
  2. Spring 中的bean 是线程安全的吗?
  3. 程序员面试题精选100题(21)-左旋转字符串[算法]
  4. 思科bfd静态路由切换_思科路由器与华为路由器静态路由关联双向BFD配置
  5. 黑胡桃木php,揭秘美国黑胡桃木的美
  6. A+B Problem(V)
  7. xmemcached spring 配置文件
  8. 操作系统 —— 磁盘
  9. Modbus协议栈开发笔记之四:Modbus TCP Client开发
  10. 关联规则算法c语言样例及分析_推荐系统总结系列-关联规则算法(四)
  11. Scribe安装问题
  12. linux上的手机管家,闪电手机管家极速版
  13. Libra客户端使用
  14. Python 二次开发 AutoCAD 简介
  15. 红帽子 linux启动盘,红帽子Red Hat Linux 9 光盘启动安装过程图解
  16. 1147 Heaps (30分)
  17. CNCF的中国云原生调查报告
  18. uni-app微信小程序,写一个级联查询
  19. 中国移动的指令大全!(不再需要人工台)
  20. python将doc文件转换docx

热门文章

  1. 证明DES解密算法实际上是DES加密算法的逆
  2. 我们实际上是房地产开发商 和 我们政府的奴隶
  3. 实时语音通讯的回音消除技术详解
  4. 你应该知道的50个项目管理术语(上)
  5. URP Lit Shader解析(1)
  6. Clipper:布尔运算类型
  7. Android 百度鹰眼 SDK
  8. Paper reading (二十一):Human gut microbiome: hopes, threats and promises
  9. 人工智能产业2021年的五大趋势
  10. 实现加减乘除混合运算和归零功能的计算器