2010-12-29 6 views
1

Ich brauche ein Verfahren, das in einer externen Anordnung aus einem Skripterstellungsfunktoid in einer BizTalk Karte zu nennen, insbesondere ein Aufzählungstyp ein Parameter in einem C# Baugruppe ist. Ist das überhaupt möglich? Ich habe in Strings oder Ganzzahlen übergeben, während ich externe Baugruppen viele Male ohne Probleme aufgerufen habe.Aufruf eine Methode, die Objektparameter von einem BizTalk scripting hat Funktoid

+0

Dies ist in der Tat durchaus möglich. Stellen Sie nur sicher, dass die Methode nicht als statisch deklariert ist und dass die Klasse über einen Standardkonstruktor verfügt. Dies sind die Anforderungen für das Skript-Funktoid. –

+0

Tatsächlich liege ich falsch. Leider scheint dies nicht möglich zu sein. Das Skript-Funktoid ermöglicht nur reguläre Skalarparameter und Rückgabetypen für Methoden, die in externen Assemblys deklariert sind. Entschuldigung für den irreführenden Kommentar. –

Antwort

1

Leider kann man nicht Aufzählungstypen in Methoden konzipiert wurden aus dem Skripterstellungsfunktoid aufgerufen werden. Sie können jedoch fast erreichen, was Sie wollen, indem Sie einen Wrapper für die externe Methode erstellen.

Zum Beispiel kann das folgende Verfahren kann nicht direkt von einem Skripterstellungsfunktoid aufgerufen werden.

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; 
     } 
    } 
} 

Der Versuch, diese Methode zu verwenden, bei dem folgenden Fehler führen:

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

Wenn Sie jedoch die folgende Wrappermethode, wenn Werke schreiben:

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

Beachten Sie, dass die Hülle Methode verwendet einen regulären String-Parameter anstelle des ursprünglichen Aufzählungstyps Optionen. Wenn Sie den Quellcode für die Methode haben, die Sie aufrufen möchten, fügen Sie einfach diesen zusätzlichen Wrapper hinzu und überladen Sie und Sie sind fertig.

+0

Danke, das scheint die einzige Lösung zu sein. Diese Art vereitelt jedoch den Zweck der Verwendung von Aufzählungen. – aceinthehole

Verwandte Themen