2010-10-18 33 views
5

Tôi có một lớp # C trông một chút như:Gán một phương pháp IronPython đến một C# đại biểu

public class MyClass 
{ 
    private Func<IDataCource, object> processMethod = (ds) => 
                  { 
                  //default method for the class 
                  } 

    public Func<IDataCource, object> ProcessMethod 
    { 
     get{ return processMethod; } 
     set{ processMethod = value; } 
    } 

    /* Other details elided */ 
} 

Và tôi có một kịch bản IronPython đó được chạy trong ứng dụng trông giống như

from MyApp import myObj #instance of MyClass 

def OtherMethod(ds): 
    if ds.Data.Length > 0 : 
     quot = sum(ds.Data.Real)/sum(ds.Data.Imag) 
     return quot 
    return 0.0 

myObj.ProcessMethod = OtherMethod 

Nhưng khi ProcessMethod được gọi (bên ngoài IronPython), sau khi gán này, phương thức mặc định được chạy.

Tôi biết tập lệnh được chạy vì các phần khác của tập lệnh hoạt động.

Tôi nên làm như thế nào?

Trả lời

11

tôi đã làm một số tiếp tục Googling và tìm thấy một trang về các góc tối của IronPython: http://www.voidspace.org.uk/ironpython/dark-corners.shtml

Những gì tôi nên làm điều này là:

from MyApp import myObj #instance of MyClass 
import clr 
clr.AddReference('System.Core') 
from System import Func 

def OtherMethod(ds): 
    if ds.Data.Length > 0 : 
     quot = sum(ds.Data.Real)/sum(ds.Data.Imag) 
     return quot 
    return 0.0 

myObj.ProcessMethod = Func[IDataSource, object](OtherMethod) 
+0

Trả lời cho một bài cũ, nhưng sẽ không bạn cũng cần phải nhập tên IDataSource từ đâu đó để làm việc này? –

Các vấn đề liên quan