私は、VB.NETアプリケーションからC#USB HIDライブラリ(Mike O'BrienのオープンソースHIDLibrary)を使用しようとしています。私はクラスのメソッドの呼び出しを簡単に行うことができました。しかし、私が別のクラスで呼びたい別のメソッドは動作していません。 VSが "非共有メンバーへの参照がオブジェクト参照を必要とする"と言うので、他のクラスのように名前空間とクラス名を呼び出すことで直接アクセスすることはできません。クラスは公開されているので、私はそれを呼び出すことができるはずですが、OK、私は自分のアプリにオブジェクト参照を追加しようとしていて、 "New"にアクセスできないため、オーバーロード解決に失敗しました。 2つのクラス(そのうちの1つは「動作する」、もう1つは動作しません)は実質的に同じように設定されているように見えます:どちらも公開しようとしています。クラスのインスタンスを追加しようとすると失敗する
私はまだC#とOOPの新機能ですので、newbの質問をお詫びください
完全なクラスはかなり大きいので、「関連する」部分だけを含めるようにします。私が何かを残している場合は、私に知らせてください。
どのようにクラス私は、アクセスしたいとdは定義されています
using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
namespace HidLibrary
{
public class HidDevice : IHidDevice
{ ...
そして、方法自体、私が呼び出そうとしている:私はこのDLLを呼び出すために私のVB.NETアプリを設定した
public bool ReadFeatureData(out byte[] data, byte reportId = 0)
方法:
Imports HidLibrary
Public Class DeviceIDTest
Dim HIDDeviceObj As New HidLibrary.HidDevice
そして最後に、メソッド呼び出しで私の試み:
If HidDeviceObj.ReadFeatureData(InBuff, reportID) Then
Return InBuff
Else
Return False
End If
あなたは常に、そのライブラリのオープンソースを確認することができます。しかし、 '' New ''がアクセス可能でないためオーバーロードの解決に失敗したという事実に基づいて - 私はクラスがpublicコンストラクタ( 'New')を持っていると思うが、いくつかのパラメータが必要です。他のオプション:インスタンスを作成する別のクラスまたはいくつかの静的メソッドが同じクラスに存在する必要があります – Fabio
この行に 'Dim HIDDeviceObj As New HidLibrary.HidDevice'と入力します。 'New()'ポップアップ。 – Neal
@Neal VS15では、残念ながら、開いているブラケットはすべて自動完成の閉じたブラケットになります。 – nobby