參考借鑒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模式與依賴注入結合
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/4517.html
標籤:架構設計
