Ejemplo n.º 1
0
 /// <summary>
 /// 设置插件参数。PluginViewBase将插件初始化后调用该方法,由继承的类对插件进行一些设置后再进行后续的加载步骤。
 /// </summary>
 /// <param name="plugin">需要被设置参数的插件。</param>
 protected override void SetPlugin(IPlugin plugin)
 {
     //全局插件不用设置任何参数。
     //edited by xc  如果需要带参数的全局变量。
     if (_id != null)
     {
         IOperationPlugin devicePlugin = plugin as IOperationPlugin;
         devicePlugin.SetParameter(_id);
     }
 }
        private static void FindOperationPlugin(Type plugin_type)
        {
            MethodAttribute attribute = plugin_type.GetCustomAttributes(typeof(MethodAttribute), false).FirstOrDefault <object>() as MethodAttribute;

            if (attribute != null)
            {
                string key = string.Format("{0}${1}", attribute.EntityType.Name, attribute.OperationName);
                if (operationPlugins.ContainsKey(key))
                {
                    throw new ApplicationExceptionFormat("实体{0}存在重复插件{1}", new object[] { attribute.EntityType.Name, attribute.OperationName });
                }
                IOperationPlugin plugin = Activator.CreateInstance(plugin_type) as IOperationPlugin;
                operationPlugins.Add(key, plugin);
            }
        }
Ejemplo n.º 3
0
        public override void Delete(object obj)
        {
            Type   type      = obj.GetType();
            string methodKey = string.Format("{0}${1}", type.Name, OperationEnum.Delete.ToString());

            if (OperationPluginFactory.IsEnableOperationPlugin)
            {
                IOperationPlugin operationPlugin = OperationPluginFactory.GetOperationPlugin(methodKey);
                if (operationPlugin != null)
                {
                    operationPlugin.InnerBeforeExecute(obj);
                    base.Delete(obj);
                    operationPlugin.InnerAfterExecute(obj);
                }
                else
                {
                    base.Delete(obj);
                }
            }
            else
            {
                base.Delete(obj);
            }
        }