특히 BizTalk 맵의 스크립팅 펑 토이 드에서 외부 어셈블리의 메서드를 호출해야합니다. 열거 형은 C# 어셈블리의 매개 변수입니다. 이것은 가능한가? 문제없이 외부 어셈블리를 여러 번 호출하는 동안 문자열이나 정수를 전달했습니다.BizTalk 스크립팅 펑 토이 드의 개체 매개 변수가있는 메서드 호출
1
A
답변
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
이것은 실제로 완벽하게 가능합니다. 메소드가 정적으로 선언되지 않고 클래스에 기본 생성자가 있는지 확인하십시오. 그것들은 스크립팅 펑 토이 드에 대한 요구 사항입니다. –
사실, 나는 틀렸다. 불행히도 이것은 가능하지 않습니다. 스크립팅 펑 토이 드는 외부 어셈블리에서 선언 된 메서드에 대한 일반 스칼라 매개 변수와 반환 형식 만 허용합니다. 오해의 소지가있는 의견에 사과드립니다. –