- PR -

プロパティ、メッソドの名前による解決

1
投稿者投稿内容
水戸黄門
会議室デビュー日: 2005/02/12
投稿数: 11
投稿日時: 2005-07-18 09:07
C#でWindowsアプリケーションを勉強しながら作っています。
Accessのオブジェクトを生成して、いろいろ操作をしようと思っていますが、
”Microsoft Access XX.X Object Library"のバージョンによって
使えるプロパティがあったり、無かったり、メソッドも引数の使い方が
違ったりしています。
これをプロパティー名、メソッド名で解決することは、できないものなのでしょうか?
(メソッドは無理かな?)

try,catchでも逃げれそうな気もしますが、COMコンポーネントのバージョンの違いにより
この手の問題は発生しそうなので、皆さんはどのように解決されているか教えて下さい。

たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2005-07-18 10:52
引用:

”Microsoft Access XX.X Object Library"のバージョンによって
使えるプロパティがあったり、無かったり、メソッドも引数の使い方が
違ったりしています。



直接の回答ではありません。
バージョン毎にクラスを作成して切り替えるといいかもしれません。
使えないメソッドも代替手段をすっきりコーディングすることができます。

切り替え方は条件分岐してもいいし、それが気持ち悪いならFactoryMethodにしてもいいかと思います。


_________________
たつごろー http://www.codeseek.net

[ メッセージ編集済み 編集者: たつごろー 編集日時 2005-07-18 11:53 ]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-07-18 16:35
引用:

これをプロパティー名、メソッド名で解決することは、できないものなのでしょうか?
(メソッドは無理かな?)



遅延バインドすればできます。
遅延バインドについては過去にも話題になったことがあるので、検索してみてください。

けど、C# だと長ったらしいコードになるので、あまりお勧めではないです。

VB.NET なら、タイプライブラリの取り込みを行わなければ、勝手に遅延バインドを使ってくれたはずです。
水戸黄門
会議室デビュー日: 2005/02/12
投稿数: 11
投稿日時: 2005-07-20 04:18
たつごろー様、渋木宏明(ひどり)様、ありがとう御座いました。
無事解決できました。

渋木宏明(ひどり)さんから教えて頂きました「遅延バインディング」で行いました。
「遅延バインディング」、「InvokeMember」でgoogleしたら、MSのサイトが
見つかりました。
実際に参考にしたURLは以下です。
http://support.microsoft.com/default.aspx?scid=kb;ja;302902

ここに、困っていたこと、やりたいこと、解決コードがすべて載っていました。

皆様、ありがとう御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)