- - PR -
COMの呼び出し
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2001-12-10 20:48
おひさしぶりです、けいです。
.NETからCOMを使いたくて、参照の追加から読み込んだのですが、 オーバーロードされた関数のうちのひとつしか呼べないみたいなのです。 それ以外の関数ってどうすれば呼べるようになるのでしょうか? 具体的には、Excel.Applicationの Workbooks.Add(); をよびたいのですが、 Workbooks.Add(object Template); しかみえないのです。 | ||||
|
投稿日時: 2001-12-10 22:00
Workbooks.Add_2は見えませんか?
| ||||
|
投稿日時: 2001-12-10 23:46
> Workbooks.Add_2は見えませんか?
見えないです。 'Excel.Workbooks' に 'Add_2' の定義がありません。 と言われちゃいます。 #tlbimp excel9.olb #ildasm /text > excel.txt #パラメータ削除 #ilasm excel.txt #なんてこともしてみましたが、さすがに動く分けないみたいです(^^; #ildasmの結果にはきちんと[opt]ってついてるんですけどねぇ... | ||||
|
投稿日時: 2001-12-11 09:48
なんだ、てっきりAdd()ってメソッドがあるのかと思ったら、そんなメソッドは
実際にないんですね。引数がオプションであるということと、引数がないって こととは違います。 C#にはオプション引数はありませんから、必ず引数を指定しなくてはなりません。 [opt]っていうのは、ILの仕様上、言語レベルでサポートするしないを決めて いいようですから、C#ではサポートしません。 | ||||
|
投稿日時: 2001-12-11 12:29
ちなみに、
この返答は、私がご質問を勘違いしてました。COMにはオーバーロードなんてない...。 Add_2とかってなるのは、C#でオーバーロードメソッドを書いた後、それをtlbexpしたときの話で、COMをtlbimpしたときには絶対にこうはなりません。そういう名前のメソッドを定義しない限り。 | ||||
|
投稿日時: 2001-12-11 20:12
そうですね。勘違いでした。 引数がオプションってことは、デフォルト引数が指定されていて、 何らかの値を渡せば、省略したときと同じ動作をしてくれるわけですよね。 ( nullは失敗(^^; ) デフォルトの値ってどこかを探せばわかるのでしょうか? あるとすれば、OLEViewだと思うのですが、 それっぽいものは見当たらないです... |
1