2012-01-25 3 views
4

NUnitとC#を使用して、古い学校のCOM/ActiveXコントロールをユニットテストしています。 私がテストしているコントロールは主にjavascriptから使用されているので、参照やコンパイル時の型情報はすべて動的に処理しています。もちろん、動的にすべてを行います。私はいくつかのイベントハンドラを接続し、イベントが適切に起動されていることを確認したいが、私はを見つけることができないイベントを見つける!私は、動的に、このように(いくつかの詳細は省略;-)、System.Activator.CreateInstanceを用いたコントロールのインスタンスを構築:NUnit + Reflectionを使用すると、ActiveXコントロールでイベントが見つかりません

EZTwainX.InvokeMember("Clear", BindingFlags.InvokeMethod, null, eztwain, null); 
Assert.AreEqual(0, (int)EZTwainX.InvokeMember("ImageCount", BindingFlags.GetProperty, null, eztwain, null), "ImageCount"); 

:プロパティとメソッドの

Type T = Type.GetTypeFromCLSID(guid); 
eztwain = System.Activator.CreateInstance(T); 
EZTwainX = eztwain.GetType(); 

試験はそうように、正常に動作します私はちょうど私がREFLを使って何かをすることができること(エヘン)を想定し

EZTwainX.GetEvent("AcquireDone");   // returns null 
EZTwainX.GetEvents();      // returns empty array 
EZTwainX.GetEvents(BindingFlags.Public | // returns empty array 
      BindingFlags.NonPublic | 
      BindingFlags.Static | BindingFlags.Instance); 
PropertyInfo propertyInfo = EZTwainX.GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);  // returns null 
MemberInfo[] mimfo = EZTwainX.GetMember("AcquireDone", MemberTypes.Event, BindingFlags.Public | BindingFlags.NonPublic);  // returns empty array 

:以下のすべてのnullまたは空の配列を返すかのような適切な「名前が見つかりません」例外をスロー、失敗相当ectionのAPI、:

eztwain.AcquireDone += <event handler>; 

が、私はそれと同等のものが何であるかを把握することはできません。 EDIT:JavaScriptでこの作品(およびイベントをキャッチする)ので、私はそのコントロールにそのイベントを信じる:

eztwain.attachEvent("AcquireDone", function() { me.onAcquireDone(); }); 

答えて

関連する問題