參考借鑒ABP中提供的擴展性 持續更新.... ==實現一:== 定義一個介面 定義一個實現,這個實現是要被另外的一個實現類代替的: 替代的實現類: 這裡的 介面 特性都是ABP中的。 ==實現二:== 介面定義: 預設實現類: 替換類: ==實現三:== 參考: "擴展與解耦:Option模式與依 ...
參考借鑒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"; }
}
實現三: