程序如何实现可扩展性
参考借鉴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"; }
}
实现三: