‘COM 参照可能なマネージ クラス ‘ComboBoxUiaProvider’ のクラス インターフェイスを要求する…
コンストラクタをクラス名と同じにしたら
エラーになって焦った。
【環境】
C#: 8.0
Visual Studio: 16.2.5(2019C)
C#: 8.0
Visual Studio: 16.2.5(2019C)
エラー
ComboBox へ DataSource を設定していたら、下記エラーメッセージと遭遇した。
マネージド デバッグ アシスタント ‘NonComVisibleBaseClass’ :
‘COM 参照可能なマネージ クラス ‘ComboBoxUiaProvider’ のクラス インターフェイスを要求する QueryInterface 呼び出しが行われましたが、
このクラスは COM 参照可能ではないクラス ‘ComboBoxExAccessibleObject’ から派生しているため、
QueryInterface は失敗します。
これは、COM 参照可能ではない基本クラスが COM バージョン管理規則によって制約されるのを防ぐためです。’
‘COM 参照可能なマネージ クラス ‘ComboBoxUiaProvider’ のクラス インターフェイスを要求する QueryInterface 呼び出しが行われましたが、
このクラスは COM 参照可能ではないクラス ‘ComboBoxExAccessibleObject’ から派生しているため、
QueryInterface は失敗します。
これは、COM 参照可能ではない基本クラスが COM バージョン管理規則によって制約されるのを防ぐためです。’
状況
Visual Studio
Visual Studio からは、「例外がスローされました」というメッセージを受け取ったけど
Exception の種類は不明。
try .. catch で、Exception を拾おうとしても、拾えない。
ロジック
コンボボックスの選択肢が、ユーザの操作状況によって変化するので
その度に、ComboBox.DataSource を設定し直す、というもの。
ComboBox1.DataSource = Items; // ここで例外
ComboBox1.DisplayMember = "ItemDisp";
ComboBox1.ValueMember = "ItemValue";
同じコードで DataSource を変更している
他の ComboBox ではこれで問題ないのに、ここだけ上記エラーとなる。
原因
解決?
原因は、上記なんだろうけど、
どうしていいかわからないので
デバッグ最中に出てくる
画面右下のペイン [例外設定] にて
[Managed Debugging Assistants]-[NonComVisibleBaseClass] のチェックを外した。