二开案例.表达式函数.编写自定义的表达式函数(字符串包含函数)

【应用场景】
当Python内置函数和平台内置函数都无法满足编写表达式的需求时,可使用自定义函数。
【案例演示】
编写一个字符串包含函数,用于判断指定文本中是否包含某串字符。
【实现步骤】
<1>继承AbstractFuncDefine,编写自定义函数,实现字符串检索功能。
using Kingdee.BOS;
using Kingdee.BOS.Core.Metadata.Expression.FuncDefine;
using System;
namespace Jac.XkDemo.BOS.Core.Functions
{
/// <summary>
/// 【函数】字符串包含函数
/// https://vip.kingdee.com/article/81106082826904320
/// </summary>
[Serializable]
public class StringContainsFuncDefine : AbstractFuncDefine
{
public StringContainsFuncDefine() { }
public StringContainsFuncDefine(Context ctx, dynamic obj)
{
m_ctx = ctx;
m_obj = obj;
}
public override IFuncDefine GetFunctionDefine(Context ctx, dynamic obj)
{
return new StringContainsFuncDefine(ctx, obj);
}
public override object GetFuncDefine()
{
return new Func<string, string, bool>(StringContains);
}
/// <summary>
/// 当前文本包含指定字符串时,返回true
/// </summary>
/// <param name="str">被检索的文本</param>
/// <param name="findStr">要查找的字符串</param>
/// <returns></returns>
bool StringContains(string str, string findStr)
{
return str.IndexOf(findStr, StringComparison.OrdinalIgnoreCase) >= 0;
}
}
}<2>向平台内置函数库注册自定义函数。
-- 注册字符串包含函数
DELETE T_MDL_ELEMENTTYPE WHERE FID=888001;
INSERT INTO T_MDL_ELEMENTTYPE (FID,FIMGKEY,FTYPEID,FISVISIBLE,FELEMENTCLASS,FAPPEARANCECLASS)
VALUES (888001, '', 1, 0, 'Jac.XkDemo.BOS.Core.Functions.StringContainsFuncDefine,Jac.XkDemo.BOS
二开案例.表达式函数.编写自定义的表达式函数(字符串包含函数)
【应用场景】当Python内置函数和平台内置函数都无法满足编写表达式的需求时,可使用自定义函数。【案例演示】编写一个字符串包含函数,用于...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



