C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: VB.NETのモジュール直下のプロパティにリフレクション


(過去ログ 49 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■26830 / inTopicNo.1)  VB.NETのモジュール直下のプロパティにリフレクション
  
□投稿者/ Chuki (1回)-(2008/10/21(Tue) 19:41:56)

分類:[.NET 全般] 

お世話になっております。ちゅきと申します。

Module Module1
Public HogeHoge1 As ProjectHogehoge.Foobar1
Public HogeHoge2 As ProjectHogehoge.Foobar2
End Module

で宣言したHogeHoge1 or HogeHoge2に、リフレクションを使ってHogeHogen(n=1,2)へアクセスするのは
どうやって行えばよいのでしょうか。
実際にはModule1にたくさんPublic変数があって、これらを後から判別してアクセスできればと思っています。
GetProperty("HogeHoge2").GetValue()見たいないなことができれば幸せになれそうです。

何がしかのオブジェクト変数に受けることができるようなものであればGetPropertyなどでアクセスできるのですが、Module1.HogeHoge1などへのアクセス方法がわかりませんorz
#そもそも設計変えろ、というのが一番正しいのは重々承知なんですがorz

引用返信 編集キー/
■26831 / inTopicNo.2)  Re[1]: VB.NETのモジュール直下のプロパティにリフレクション
□投稿者/ Hongliang (308回)-(2008/10/21(Tue) 19:48:41)
> GetProperty("HogeHoge2").GetValue()見たいないなことができれば幸せになれそうです。
不幸な未来ばかり想像してしまいます。

Module は静的なメンバばかりを持ったクラスと考えられます。
ですので普通に
GetType(Module1).GetField("HogeHoge1")
するだけです。
引用返信 編集キー/
■26834 / inTopicNo.3)  Re[2]: VB.NETのモジュール直下のプロパティにリフレクション
□投稿者/ Chuki (2回)-(2008/10/21(Tue) 20:22:44)
ありがとうございます
GetMemberで取得した値をPropertyInfoにキャストしたとき、普通のオブジェクト変数ですと

MyProp.SetValue(objHoge,objDest,Nothing)'objHogeにobjDestを入れる

なんかで値を設定できるのですが、このobjHogeにあたる部分をどうしたら良いかがわからないんですorz
ちなみにGetFiledだと取れませんでした。
ひょっとしてCEだと動きが違うんでしょうか
#不幸になれそうなのかなorz

申し訳ありません。Windows CEです。

引用返信 編集キー/
■26839 / inTopicNo.4)  Re[3]: VB.NETのモジュール直下のプロパティにリフレクション
□投稿者/ やじゅ (715回)-(2008/10/22(Wed) 01:57:03)
やじゅ さんの Web サイト
No26834 (Chuki さん) に返信

Activator.CreateInstanceで、インスタンスを生成させるとか
VB.NET で、リフレクションによって、プログラムを動的に呼び出すには
http://www.okisoft.co.jp/esc/debugtool/VSNET.html
引用返信 編集キー/
■26854 / inTopicNo.5)  Re[4]: VB.NETのモジュール直下のプロパティにリフレクション
□投稿者/ なちゃ (186回)-(2008/10/22(Wed) 10:26:00)
いやそういう問題じゃないでしょう…

静的メンバなのですからNothingでいいはずです。
CEで特に制限が無ければですが。

引用返信 編集キー/
■26866 / inTopicNo.6)  Re[5]: VB.NETのモジュール直下のプロパティにリフレクション
□投稿者/ Chuki (3回)-(2008/10/22(Wed) 12:27:52)
No26854 (なちゃ さん) に返信
> いやそういう問題じゃないでしょう…
>
> 静的メンバなのですからNothingでいいはずです。
> CEで特に制限が無ければですが。
>

皆様ごめんなさい。ちゃんと動いてました。

単にNothingを代入していたのですが、そのクラス内のNullチェックがおかしくてException吐いてました。

GetType(Module1).GetField("HogeHoge1").GetValue(Nothing)
GetType(Module1).GetField("HogeHoge1").SetValue(Nothing,Nothing)
で動いてました。

恥ずかしすぎる...
#まじめに文字化けして見えるドキュメントを読むことにしますorz

重ねてお手数おかけしてしまったことお詫び申し上げますm(_ _)m



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -