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

Silk Performer で .NET テスト コードを使用して最適な結果を得るには、.NET コード内から BDL 関数を呼び出します。 .NET アセンブリ perfdotnetfw.dll は Silk 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;
    }
    }
    }