参考借鉴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模式与依赖注入结合