有一各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()

解决方案 »

  1.   

    只知道点Python,还不知道IronPython,学习
      

  2.   

    查了下资料,不知道这样行不行
    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
      

  3.   

    hornbills 同志的方法并没有解决实质性问题
    100%是要在TestData这个类上动手脚,利用SpecialName属性做些事情但是现在不知道怎么做
    动态注入属性的我会但是动态注入方法的不知道怎么玩!
    大家帮忙看看
      

  4.   

    典型的牛角啊
    如果楼主的思想实现了,肯定存在安全问题和程序稳定性涉及到复杂的应用,如更换数据库,sql 改为 Access.使用assembly调用不同的DLL文件
    如果是添加功能等等,版本升级啊
      

  5.   

    问题解决了一半
    跟动态注入属性一样的实现方式
    我开始认为注入属性和注入方法有不同的实现,呵呵!定式思维害人啊!
    注入时无论是方法还是属性都是以对象(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要是能把这各解决掉就好了