纸壳CMS在设计上使用的是ASP.Net Core默认的IOC容器,通过依赖注入可以轻松替换掉原来的接口实现。例如在使用纸壳CMS做二次开发的过程中,可能要接入另一系统的用户来作为CMS系统的用户。这种情况下,可以不用修改原来的UserService,而是重新实现一个IUserService,然后用这个新的实现来替换掉旧的UserService

1. 新建一个新的User插件

新建纸壳CMS插件很简单,可以参考这篇文章:http://www.zkea.net/codesnippet/detail/zkeacms-plugin-development.html

2. 新建一个UserService

这个新的UserService需要继承自IUserService,并对每一个方法做出实现:

public class CRMUserService : Easy.Modules.User.Service.IUserService
{
        
}

3. 依赖注入替换旧的Service

在插件的插件类(xxxPlug.cs)中,在ConfigureServices注册Service的方法中进行注入替换:

public override void ConfigureServices(IServiceCollection serviceCollection)
{
    serviceCollection.Replace(new ServiceDescriptor(typeof(IUserService), typeof(CRMUserService), ServiceLifetime.Transient));
}

这样,当系统中获取IUserService的实例时,得到的就是新的CRMUserService了。