有一各c#的类例如:
//数据交互类
public class TestData
{
public int intNum = 0;
public int a = 0;
public int b = 0;
} private void button2_Click(object sender, EventArgs e)
{
ScriptEngine _py = Python.CreateEngine();
ScriptScope _globals;
_globals = _py.Runtime.Globals;
TestData td = new TestData();
td.intNum = 10;
_globals.SetVariable("td", td);
// scriptEngine.DefaultModule.Globals["td"] = td;
//scriptEngine.Execute(textBox1.Text);
String src = textBox1.Text;
ScriptSource sc = _py.CreateScriptSourceFromString(src, SourceCodeKind.Statements);
sc.Execute(_globals);
textBox2.Text = td.intNum.ToString(); }
想通过IronPython动态的添加个方法,比如td.a=100
td.b=200
def add():
return a+btd.fAdd+=addtd.fAdd()
import clr
clr.AddReference("TestDataLib.dll")
from TestDataLib import TestData
y = TestData()
y.a = 100
y.b=200
def add():
return a+b
y.fAdd+=add
100%是要在TestData这个类上动手脚,利用SpecialName属性做些事情但是现在不知道怎么做
动态注入属性的我会但是动态注入方法的不知道怎么玩!
大家帮忙看看
如果楼主的思想实现了,肯定存在安全问题和程序稳定性涉及到复杂的应用,如更换数据库,sql 改为 Access.使用assembly调用不同的DLL文件
如果是添加功能等等,版本升级啊
跟动态注入属性一样的实现方式
我开始认为注入属性和注入方法有不同的实现,呵呵!定式思维害人啊!
注入时无论是方法还是属性都是以对象(Object)方式注入的,所以都一样!
td.a=100
td.b=200
def add():
return td.a+td.btd.fAdd=addtd.fAdd()
美中不足的地方就是return td.a+td.b这行代码不能用return a+b要是能把这各解决掉就好了