python插件.常见问题.组件引用、命名空间导入、函数调用原创
金蝶云社区-碎银几两
碎银几两
2人赞赏了该文章 52次浏览 未经作者许可,禁止转载编辑于2024年01月25日 16:10:19

【案例】在python中访问自定义c#组件的各种方法
如果需要了解实践的可查询 IronPython

【准备工作】
服务器bin目录下自定义组件,以及相关的代码
image.png

namespace DynamicFormPlugIn.Tools{    public static class ToolsUtils
    {        /*
         * 静态工程调用
         */
        public static string GetMessage()        {            return string.Format("ToolsUtils.GetMessage()");
        }        public static string GetMessageOne(string arg)        {            return string.Format("ToolsUtils.GetMessageOne(): arg ={0}", arg);
        }
    }    public class ToolsDefaultIml
    {        /*
         * 默认构造函数
         */
        public ToolsDefaultIml()        {
        }        public static string GetMessage()        {            return string.Format("ToolsDefaultIml.GetMessage()");
        }        public static string GetMessageOne(string arg)        {            return string.Format("ToolsDefaultIml.GetMessageOne(): arg ={0}", arg);
        }
    }    public class ToolsOneArgImpl
    {        /*
         * 单参数构造函数
         */

        string arg1;        public ToolsOneArgImpl(string arg)        {
            arg1 = arg;
        }        public string GetMessage()        {            return string.Format("ToolsOneArgImpl.GetMessage(): arg1 = {0}", arg1);
        }
    }
}

【python案例】
image.png

import clr
clr.AddReference("mscorlib")
clr.AddReference("System.Data")#增加引用自定义组件clr.AddReference("DynamicFormPlugIn")from System import *from System.Collections.Generic import *from System.Data import *#导入组件的命名空间from DynamicFormPlugIn.Tools import *def BarItemClick(e):
	if (e.BarItemKey.Equals("tbTestPython", StringComparison.OrdinalIgnoreCase)):
		msg = '';
		msg +=ToolsUtilsTest()+'\r\n';
		msg +=ToolsDefaultImlTest()+'\r\n';
		msg +=ToolsOneArgImplTest()+'\r\n';
		this.View.ShowMessage(msg);		
def ToolsUtilsTest():
	##公有静态工程调用
	ans = '';
	ans +=ToolsUtils.GetMessage();
	ans +='\r\n';
	ans +=ToolsUtils.GetMessageOne(' hello world ');	return ans;	
def ToolsDefaultImlTest():
	##公有无参实例类调用
	ans = '';
	implObj = ToolsDefaultIml();
	ans += implObj.GetMessage();
	ans += '\r\n';
	ans += implObj.GetMessageOne(' test 123 ');	return ans;def ToolsOneArgImplTest():
	##公有一参数实例类调用
	ans = '';
	implObj = ToolsOneArgImpl(' show kd message');
	ans += implObj.GetMessage();	return ans;

【效果】
image.png

<p>【案例】在python中访问自定义c#组件的各种方法<br /> 如果需要了解实践的可查询 IronPython</p> <p>【准备工作】<br /> 服务器bin目录下自定义组件,以及相关的代码<br /> <img src="/download/0100b7c88151164a4076b82010ae9bb3e126.png" alt="image.png" /></p> <pre><div class="hljs"><code class="lang-csharp"><span class="hljs-keyword">namespace</span> <span class="hljs-title">DynamicFormPlugIn.Tools</span> {    <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">class</span> <span class="hljs-title">ToolsUtils</span>    {        <span class="hljs-comment">/*         * 静态工程调用         */</span>        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">string</span> <span class="hljs-title">GetMessage</span>(<span class="hljs-params"></span>)        </span>{            <span class="hljs-keyword">return</span> <span class="hljs-keyword">string</span>.Format(<span class="hljs-string">"ToolsUtils.GetMessage()"</span>);        }        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">string</span> <span class="hljs-title">GetMessageOne</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> arg</span>)        </span>{            <span class="hljs-keyword">return</span> <span class="hljs-keyword">string</span>.Format(<span class="hljs-string">"ToolsUtils.GetMessageOne(): arg ={0}"</span>, arg);        }    }    <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">ToolsDefaultIml</span>    {        <span class="hljs-comment">/*         * 默认构造函数         */</span>        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">ToolsDefaultIml</span>(<span class="hljs-params"></span>)        </span>{        }        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">string</span> <span class="hljs-title">GetMessage</span>(<span class="hljs-params"></span>)        </span>{            <span class="hljs-keyword">return</span> <span class="hljs-keyword">string</span>.Format(<span class="hljs-string">"ToolsDefaultIml.GetMessage()"</span>);        }        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">string</span> <span class="hljs-title">GetMessageOne</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> arg</span>)        </span>{            <span class="hljs-keyword">return</span> <span class="hljs-keyword">string</span>.Format(<span class="hljs-string">"ToolsDefaultIml.GetMessageOne(): arg ={0}"</span>, arg);        }    }    <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">ToolsOneArgImpl</span>    {        <span class="hljs-comment">/*         * 单参数构造函数         */</span>        <span class="hljs-keyword">string</span> arg1;        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">ToolsOneArgImpl</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> arg</span>)        </span>{            arg1 = arg;        }        <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">string</span> <span class="hljs-title">GetMessage</span>(<span class="hljs-params"></span>)        </span>{            <span class="hljs-keyword">return</span> <span class="hljs-keyword">string</span>.Format(<span class="hljs-string">"ToolsOneArgImpl.GetMessage(): arg1 = {0}"</span>, arg1);        }    } } </code></div></pre> <p>【python案例】<br /> <img src="/download/0100bbddc94cfad64a4aa6c684e4182eaaed.png" alt="image.png" /></p> <pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">import</span> clr clr.AddReference(<span class="hljs-string">"mscorlib"</span>) clr.AddReference(<span class="hljs-string">"System.Data"</span>) <span class="hljs-comment">#增加引用自定义组件</span> clr.AddReference(<span class="hljs-string">"DynamicFormPlugIn"</span>) <span class="hljs-keyword">from</span> System <span class="hljs-keyword">import</span> * <span class="hljs-keyword">from</span> System.Collections.Generic <span class="hljs-keyword">import</span> * <span class="hljs-keyword">from</span> System.Data <span class="hljs-keyword">import</span> * <span class="hljs-comment">#导入组件的命名空间</span> <span class="hljs-keyword">from</span> DynamicFormPlugIn.Tools <span class="hljs-keyword">import</span> * <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">BarItemClick</span><span class="hljs-params">(e)</span>:</span> <span class="hljs-keyword">if</span> (e.BarItemKey.Equals(<span class="hljs-string">"tbTestPython"</span>, StringComparison.OrdinalIgnoreCase)): msg = <span class="hljs-string">''</span>; msg +=ToolsUtilsTest()+<span class="hljs-string">'\r\n'</span>; msg +=ToolsDefaultImlTest()+<span class="hljs-string">'\r\n'</span>; msg +=ToolsOneArgImplTest()+<span class="hljs-string">'\r\n'</span>; this.View.ShowMessage(msg); <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">ToolsUtilsTest</span><span class="hljs-params">()</span>:</span> <span class="hljs-comment">##公有静态工程调用</span> ans = <span class="hljs-string">''</span>; ans +=ToolsUtils.GetMessage(); ans +=<span class="hljs-string">'\r\n'</span>; ans +=ToolsUtils.GetMessageOne(<span class="hljs-string">' hello world '</span>); <span class="hljs-keyword">return</span> ans; <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">ToolsDefaultImlTest</span><span class="hljs-params">()</span>:</span> <span class="hljs-comment">##公有无参实例类调用</span> ans = <span class="hljs-string">''</span>; implObj = ToolsDefaultIml(); ans += implObj.GetMessage(); ans += <span class="hljs-string">'\r\n'</span>; ans += implObj.GetMessageOne(<span class="hljs-string">' test 123 '</span>); <span class="hljs-keyword">return</span> ans; <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">ToolsOneArgImplTest</span><span class="hljs-params">()</span>:</span> <span class="hljs-comment">##公有一参数实例类调用</span> ans = <span class="hljs-string">''</span>; implObj = ToolsOneArgImpl(<span class="hljs-string">' show kd message'</span>); ans += implObj.GetMessage(); <span class="hljs-keyword">return</span> ans; </code></div></pre> <p>【效果】<br /> <img src="/download/0100268f5684235f48738524dc3d9ed24e7f.png" alt="image.png" /></p>
导航目录

【案例】在python中访问自定义c#组件的各种方法
如果需要了解实践的可查询 IronPython

【准备工作】
服务器bin目录下自定义组件,以及相关的代码
image.png

namespace DynamicFormPlugIn.Tools{    public static class ToolsUtils
    {        /*
         * 静态工程调用
         */
        public static string GetMessage()        {            return string.Format("ToolsUtils.GetMessage()");
        }        public static string GetMessageOne(string arg)        {            return string.Format("ToolsUtils.GetMessageOne(): arg ={0}", arg);
        }
    }    public class ToolsDefaultIml
    {        /*
         * 默认构造函数
         */
        public ToolsDefaultIml()        {
        }        public static string GetMessage()        {            return string.Format("ToolsDefaultIml.GetMessage()");
        }        public static string GetMessageOne(string arg)        {            return string.Format("ToolsDefaultIml.GetMessageOne(): arg ={0}", arg);
        }
    }    public class ToolsOneArgImpl
    {        /*
         * 单参数构造函数
         */

        string arg1;        public ToolsOneArgImpl(string arg)        {
            arg1 = arg;
        }        public string GetMessage()        {            return string.Format("ToolsOneArgImpl.GetMessage(): arg1 = {0}", arg1);
        }
    }
}

【python案例】
image.png

import clr
clr.AddReference("mscorlib")
clr.AddReference("System.Data")#增加引用自定义组件clr.AddReference("DynamicFormPlugIn")from System import *from System.Collections.Generic import *from System.Data import *#导入组件的命名空间from DynamicFormPlugIn.Tools import *def BarItemClick(e):
	if (e.BarItemKey.Equals("tbTestPython", StringComparison.OrdinalIgnoreCase)):
		msg = '';
		msg +=ToolsUtilsTest()+'\r\n';
		msg +=ToolsDefaultImlTest()+'\r\n';
		msg +=ToolsOneArgImplTest()+'\r\n';
		this.View.ShowMessage(msg);		
def ToolsUtilsTest():
	##公有静态工程调用
	ans = '';
	ans +=ToolsUtils.GetMessage();
	ans +='\r\n';
	ans +=ToolsUtils.GetMessageOne(' hello world ');	return ans;	
def ToolsDefaultImlTest():
	##公有无参实例类调用
	ans = '';
	implObj = ToolsDefaultIml();
	ans += implObj.GetMessage();
	ans += '\r\n';
	ans += implObj.GetMessageOne(' test 123 ');	return ans;def ToolsOneArgImplTest():
	##公有一参数实例类调用
	ans = '';
	implObj = ToolsOneArgImpl(' show kd message');
	ans += implObj.GetMessage();	return ans;

【效果】
image.png


赞 2