程序如何實現可擴展性


參考借鑒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模式與依賴注入結合


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM