2010-12-29 3 views
1

특히 BizTalk 맵의 스크립팅 펑 토이 드에서 외부 어셈블리의 메서드를 호출해야합니다. 열거 형은 C# 어셈블리의 매개 변수입니다. 이것은 가능한가? 문제없이 외부 어셈블리를 여러 번 호출하는 동안 문자열이나 정수를 전달했습니다.BizTalk 스크립팅 펑 토이 드의 개체 매개 변수가있는 메서드 호출

+0

이것은 실제로 완벽하게 가능합니다. 메소드가 정적으로 선언되지 않고 클래스에 기본 생성자가 있는지 확인하십시오. 그것들은 스크립팅 펑 토이 드에 대한 요구 사항입니다. –

+0

사실, 나는 틀렸다. 불행히도 이것은 가능하지 않습니다. 스크립팅 펑 토이 드는 외부 어셈블리에서 선언 된 메서드에 대한 일반 스칼라 매개 변수와 반환 형식 만 허용합니다. 오해의 소지가있는 의견에 사과드립니다. –

답변

1

불행히도 스크립트 펑 토이 드에서 호출하도록 설계된 메서드에서는 열거 형을 사용할 수 없습니다. 그러나 외부 메소드를 래퍼 (wrapper)로 만들어 거의 원하는 것을 얻을 수 있습니다.

예를 들어, 다음 방법은 스크립팅 펑 토이 드에서 직접 호출 할 수 없습니다. 래퍼가

public string DoSomething(string option) 
    { 
     return Helper.DoSomething(
       (Options) Enum.Parse(typeof(Options), option) 
      ); 
    } 

주의 사항 : 만약 작품을 다음과 같은 래퍼 방법을 작성하는 경우,

Function 'ScriptNS0:DoSomething()' has failed. Value was either too large or too small for an Int32.

그러나 :

using System; 

namespace ExternalAssembly 
{ 
    public enum Options 
    { 
     OptionNumberOne, 
     OptionNumberTwo, 
    } 

    public class Helper 
    { 
     public string DoSomething(Options option) 
     { 
      // really do something useful here 
      return String.Empty; 
     } 
    } 
} 

다음과 같은 오류가 발생합니다이 방법을 사용하려고 메서드가 원래 Options 열거 형 대신 일반 String 매개 변수를 사용하고 있습니다. 호출 할 메소드의 소스 코드가있는 경우이 여분의 래퍼를 추가하여 오버로드하면 완료됩니다.

+0

감사합니다. 유일한 해결책 인 것 같습니다. 그런 종류의 열거 형을 사용하는 목적을 패배. – aceinthehole