zoukankan      html  css  js  c++  java
  • 程序如何实现可扩展性

    参考借鉴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模式与依赖注入结合

  • 相关阅读:
    Hypercall机制
    python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
    计算机基础知识
    Proxmox初步了解
    Centos7-安装py3
    KVM-virsh常用命令
    Centos7-VNC安装
    Centos7-bond模式介绍
    KVM管理工具
    Win10-无法启动虚拟机
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/12695180.html
Copyright © 2011-2022 走看看