2013-06-12 3 views
0

현재 사용자 지정 작업을 개발하고 있는데 문제가 있습니다.사용자 지정 작업 : TaskHost 매개 변수 지속성

내 사용자 지정 작업은 세 개의 파일로 구성 양식 인 인터페이스 "IDtsTaskUI"

  • MBForm를 구현하는 인터페이스 "작업"
  • MBTaskUI를 구현하는 클래스를 포함

    • MBTask합니다.

    Initialize() 함수의 MBTaskUI에서 TaskHost 객체를 나타내며이를 변수에 저장합니다. 그리고 다음의 getView() 함수 O를 그것은 잘 작동

    public void Initialize(TaskHost taskHost, IServiceProvider serviceProvider) 
    { 
        this.taskHost = taskHost; 
        IDtsConnectionService cs = serviceProvider.GetService 
        (typeof(IDtsConnectionService)) as IDtsConnectionService; 
        this.connections = cs.GetConnections(); 
    } 
    
    public ContainerControl GetView() 
    { 
        return new MBForm(this.taskHost, this.connections); 
    } 
    

    내 양식 빌더이 TaskHost를 보내고 난 양식을로드 할 때 매개 변수를 얻기 위해 내 폼이 TaskHost를 사용하고 난 그것을 닫을 때 저장할 수 있습니다 .

    String script_tmp = (String)th.Properties["myScript"].GetValue(th); 
    SqlConnection conn_tmp = (SqlConnection)th.Properties["myConnection"].GetValue(th); 
    
    th.Properties["myScript"].SetValue(th, myScript);     
    th.Properties["myConnection"].SetValue(th, myConnectionTarget); 
    

    그래서 작업 편집기를 다시 열면 일부 매개 변수를 사용하여 개체를 초기화합니다.

    하지만 내 문제는 내 MBTask 클래스에서 매개 변수 (myConnection 및 myScript)를 확인하는 Validate() 함수가 있습니다. 이 매개 변수는 항상 null입니다. (일반적으로 MBForm과 닫기 함수를 사용하여 초기화 한 후에도)

    따라서 매개 변수가 인스턴스화되지 않은 이유는 무엇입니까? "th.Properties ["로 myscripf "] SetValue는 (일,로 myscripf)."

    로 myscripf 및 myConnection과 내 MBTask 공개를 선언 내가 얻을 수 있기 때문에 이러한 매개 변수가 저장 알고

    public class MBTask : Task 
    { 
        public SqlConnection myConnection { get; set; } 
        public String myScript { get; set; } 
    

    ?. 다시 편집기를 열 때 다시 나타납니다. 그렇다면 Validate()를 수행 할 때 null이되는 이유는 무엇입니까?

    MBTaskUI에서 TaskHost에 대한 링크와 MBTask에서 가져온 링크를 추가해야합니까?

    내가 여기에 이해하지 못하는 뭔가 ... 당신의 도움을

    감사합니다,

    레우 레조 이네가있을 것으로 보인다.

  • +0

    조사 후 UI와 작업이 완전히 분리 된 구성 요소라는 것을 알았습니다. 그래서 Form (및 TaskHost)으로 정의한 속성을 어떻게 얻을 수 있습니까? 편집 한 후에 구성 요소를 클릭하면 속성 패널 (myScript 및 myConnection)에서 볼 수 있습니다. –

    답변

    0

    나는 해결책을 원한다 :

    구현 한 시스템이 정확했다. 그러나 복잡한 매개 변수 (SQLConnection)를 사용하려면 XML 저장을 사용해야합니다.

    따라서 작업의 기본 저장 매개 변수를 사용하려면 String 및 Integer와 같은 간단한 개체 만 사용하십시오.

    유효성 검사 기능은 아직 인스턴스화되지 않았기 때문에 매개 변수를 사용할 수 없으므로 null입니다.

    관련 문제