.NET 内で .NET Framework 関数を使用する

Silk Performer で .NET テスト コードを使用して最適な結果を得るには、.NET コード内から BDL 関数を呼び出します。 .NET アセンブリ perfdotnetfw.dllSilk Performer に付属しており、Silk Performer .Bdl クラスを実装します。ほとんどの BDL 関数が実装されています。
  1. .NET プロジェクトで、perfdotnetfw.dll への参照を追加します。 この DLL は、Silk Performer インストール ディレクトリにあります。
  2. Silk Performer の名前空間をインポートします (実装言語に応じて、以下の必要なコードを参照してください)。
    using Silk Performer; // C#
    imports Silk Performer // VB.NET
     
  3. .NET コードで静的関数を使用します。

    例:

    Bdl.Print("This is a message from within a .NET Assembly");
    
    BDL クラスによって定義される関数は、.NET アセンブリを仮想ユーザーで実行する場合にのみ使用できます。 これは、perfrun.exe 関数 (仮想ユーザー プロセス) が呼び出されるためです。

    Bdf スクリプト例

    dcltrans
      transaction TMain
      var
    hObject, hObject2 : number;
    hReturn : number;
      begin
        DotNetSetString(hObject, "ConstrValue1");
        hObject := DotNetLoadObject("bin\\Release\\TestDriver.dll", "TestDriver.TestClass");
        hObject2 := DotNetLoadObject("bin\\Release\\TestDriver.dll", "TestDriver.ParamClass");
        DotNetSetFloat(hObject, 1.23);
        DotNetSetInt(hObject, 123);
        DotNetCallMethod(hObject,"TestMethod");
        DotNetGetObject(hObject, hReturnValue);
        DotNetFreeObject(hObject);
        DotNetFreeObject(hObject2);
        DotNetFreeObject(hReturn);
      end TMain;

    .NET コード (C#) 例

    using System;
    using Silk Performer;
    namespace TestDriver
    {
      public class TestClass
    {
    
    public TestClass(string sConstrValue)
    {
    Bdl.Print("Constructor called with param" + sConstrValue);
    }
    
    public TestClass()
    {
    Bdl.Print("Default Constructor called!");
    }
    
    public ParamClass TestMethod(double fParam, int nParam)
    {
    return new ParamClass(fParam, nParam);
    }
    }
    
      public class ParamClass
    {
    public double mfMember;
    public int mnMember;
    
    public ParamClass(double fParam, int nParam)
    {
    mfMember = fParam;
    mnMember = nParam;
    }
    
    public ParamClass()
    {
    mfMember = 0.0;
    mnMember = 0;
    }
    }
    }