src/ZKEACMS/Widget/DefaultWidgetActivator.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

/* http://www.zkea.net/ 
 * Copyright (c) ZKEASOFT. All rights reserved. 
 * http://www.zkea.net/licenses */
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Extensions.DependencyInjection;
using ZKEACMS.WidgetTemplate;
using System.Linq;

namespace ZKEACMS.Widget
{
    public class DefaultWidgetActivator : IWidgetActivator
    {
        private readonly IServiceProvider _serviceProvider;
        public DefaultWidgetActivator(IServiceProvider serviceProvider)
        {
            _serviceProvider = serviceProvider;
        }
        public IWidgetPartDriver Create(WidgetBase widget)
        {
            if (widget == null)
            {
                throw new Exception($"Fail to create widget service. Because the widget is null.");
            }
            string key = $"{widget.AssemblyName},{widget.ServiceTypeName}";
            if (WidgetBase.KnownWidgetService.ContainsKey(key))
            {
                return _serviceProvider.GetService(WidgetBase.KnownWidgetService[key]) as IWidgetPartDriver;
            }
            else
            {
                var template = _serviceProvider.GetService<IWidgetTemplateService>().Get(m => m.PartialView == widget.PartialView).FirstOrDefault();
                if (template != null)
                {
                    widget.AssemblyName = template.AssemblyName;
                    widget.ServiceTypeName = template.ServiceTypeName;
                    widget.ViewModelTypeName = template.ViewModelTypeName;
                    key = $"{widget.AssemblyName},{widget.ServiceTypeName}";
                    if (WidgetBase.KnownWidgetService.ContainsKey(key))
                    {
                        return _serviceProvider.GetService(WidgetBase.KnownWidgetService[key]) as IWidgetPartDriver;
                    }
                }
            }
            throw new Exception($"Fail to create {key} instance. May be the plugin is not exists or not regist.");
        }

        public WidgetBase CreateWidgetViewModel(WidgetBase widget)
        {
            if (widget == null)
            {
                throw new Exception($"Fail to create widget service. Because the widget is null.");
            }
            string key = $"{widget.AssemblyName},{widget.ViewModelTypeName}";
            if (WidgetBase.KnownWidgetModel.ContainsKey(key))
            {
                return widget.CopyTo(_serviceProvider.GetService(WidgetBase.KnownWidgetModel[key]) as WidgetBase);
            }
            else
后面还有 18 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。