0

ライブラリの VAPI を作成しようとしていmongocます。

いくつかの関数が関連付けられた構造体からいくつかのコンパクトなクラスを作成しました。たとえば、Client次のようになります。

[Compact]
[CCode (cname = "mongoc_client_t", free_function = "mongoc_client_destroy", has_type_id = false)]
public class Client {

   [CCode (cname = "mongoc_client_new")]
   public Client (string uri);
}

関連する関数の束もバインドする必要があります。次のように、それらをインスタンスメソッドとしてバインドしようとしました:

[CCode (cname = "mongoc_client_get_database")]
public Database get_database (Client client, string dbname);
//Database is another compact class

結果は次のようになります。

[CCode (cheader_filename = "mongoc.h")]
namespace Mongo {
   [Compact]
   [CCode (cname = "mongoc_client_t", free_function = "mongoc_client_destroy", has_type_id = false)]
   public class Client {

      [CCode (cname = "mongoc_client_new")]
      public Client (string uri);

      [CCode (cname = "mongoc_client_get_database")]
      public Database get_database (Client client, string dbname);
   }
}

client最初のパラメーターを呼び出し元のインスタンスとして取得したかったのです。これの代わりに:

var client = new Client ("uri");
var db = client.get_database (client, "test");
//client is redundant

私はこれを取得しようとしています:

var client = new Client ("uri");
var db = client.get_database ("test");
//The Client instance is passed implicitly

this、静的メソッド、およびその他の調整を使用してみinstance_posましたが、そのように機能させる方法が見つかりませんでした。

Valaのパラメータとしてインスタンスを暗黙的に渡すことは可能ですか? その場合、インスタンスが冗長性なしで暗黙的に渡されるように VAPI をバインドするにはどうすればよいですか?

4

1 に答える 1