参考借鉴ABP中提供的扩展性
持续更新....
实现一:
定义一个接口
代码语言:javascript复制public interface IMessageWriter
{
string Write();
}
定义一个实现,这个实现是要被另外的一个实现类代替的:
代码语言:javascript复制public class ConsoleMessageWriter : IMessageWriter, ITransientDependency
{
public string Write()
{
return "ConsoleMessageWriter.Write";
}
}
替代的实现类:
代码语言:javascript复制[Dependency(ReplaceServices = true)] // 调用了asp.net core中的services.replace实现
public class ReplaceMessageWriter : IMessageWriter, ITransientDependency
{
public string Write()
{
return "ReplaceMessageWriter.Write";
}
}
这里的
ITransientDependency
接口Dependency
特性都是ABP中的。
实现二:
接口定义:
代码语言:javascript复制public interface IBrandProvider
{
string AppName { get; }
}
默认实现类:
代码语言:javascript复制public class DefaultBrandProvider : IBrandProvider, ITransientDependency
{
public DefaultBrandProvider() { }
public virtual string AppName { get => "DefaultBrandProvider"; }
}
替换类:
代码语言:javascript复制[Dependency(ReplaceServices = true)] //如果没有此特性,那么接口的实现类有两个。
public class ReplaceBrandProvider : DefaultBrandProvider
{
public override string AppName { get => "ReplaceBrandProvider"; }
}
实现三:
参考:扩展与解耦:Option模式与依赖注入结合