/// <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); } }
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); } }