C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[5]: Type.GetMethodsでPublicメソッドのみ取得
(過去ログ 19 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 6 記事 (1 - 6 表示)] <<
0
>>
■8042
/ inTopicNo.1)
Type.GetMethodsでPublicメソッドのみ取得
▼
■
□投稿者/ 春紫苑
(5回)-(2007/09/21(Fri) 16:11:30)
分類:[C#]
環境は C#, VS2005 です。
あるクラスのPublicメソッドだけを一覧表示するプログラムを作成しています。
hoge.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public);
上記のコードでPublicメソッドは取得できるのですが、
Publicプロパティが定義されている場合、
「get_プロパティ名」なるメソッドが出力されてしまいます。
このメソッドを除外する方法についてアドバイスを頂けませんか?
お願いします。
引用返信
編集キー/
編集
■8059
/ inTopicNo.2)
Re[1]: Type.GetMethodsでPublicメソッドのみ取得
▲
▼
■
□投稿者/ Jitta on the way
(14回)-(2007/09/21(Fri) 18:27:52)
■
No8042
(春紫苑 さん) に返信
> 環境は C#, VS2005 です。
>
> あるクラスのPublicメソッドだけを一覧表示するプログラムを作成しています。
>
> hoge.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public);
>
> 上記のコードでPublicメソッドは取得できるのですが、
> Publicプロパティが定義されている場合、
> 「get_プロパティ名」なるメソッドが出力されてしまいます。
> このメソッドを除外する方法についてアドバイスを頂けませんか?
>
> お願いします。
set_プロパティ
もあるんじゃないかな?
プロパティを実現するために作られるアクセス メソッドですね。
名前付けのルールは単純なので、プロパティ一覧を拾って引くというのはどう?
引用返信
編集キー/
編集
■8066
/ inTopicNo.3)
Re[2]: Type.GetMethodsでPublicメソッドのみ取得
▲
▼
■
□投稿者/ なちゃ
(61回)-(2007/09/21(Fri) 19:12:11)
スペシャルネームなメソッドは省くとか?
引用返信
編集キー/
編集
■8069
/ inTopicNo.4)
Re[3]: Type.GetMethodsでPublicメソッドのみ取得
▲
▼
■
□投稿者/ mあ
(67回)-(2007/09/21(Fri) 20:54:08)
■
No8066
(なちゃ さん) に返信
> スペシャルネームなメソッドは省くとか?
BindingFlags#
●アクセシビリティで識別
DeclaredOnly
FlattenHierarchy
IgnoreCase
IgnoreReturn
Instance
NonPublic
Public
Static
●バインディング引数で識別
ExactBinding
OptionalParamBinding
●操作で識別
CreateInstance
GetField
SetField
GetProperty
SetProperty
InvokeMethod
PutDispProperty
PutRefDispProperty
dim mi() as MethodInfo
with(BindingFlags)
mi = Type.GetMethods(.Public Or .Instance Or .InvokeMethod)
end with
じゃぁないかと。
MSDNみまひょ。
引用返信
編集キー/
編集
■8073
/ inTopicNo.5)
Re[4]: Type.GetMethodsでPublicメソッドのみ取得
▲
▼
■
□投稿者/ Hongliang
(193回)-(2007/09/21(Fri) 22:24:51)
2007/09/21(Fri) 22:25:18 編集(投稿者)
■
No8069
(mあ さん) に返信
> じゃぁないかと。
>
> MSDNみまひょ。
MSDN ならまず Type.GetMethods(BindingFlags) を見てください。使用できる BindingFlags が明記されていますから。
IsSpecialName なのを省くか、あとは GetProperties & GetEvents で get/set/add/remove の MethodInfo を取得して、GetMethods で取得したそれぞれが一致するかどうか確認するとか?
あ、演算子のオーバーロードはどうしようか……。
// C# コンパイラ的には IsSpecialName で十分らしいけど。
引用返信
編集キー/
編集
■8080
/ inTopicNo.6)
Re[5]: Type.GetMethodsでPublicメソッドのみ取得
▲
▼
■
□投稿者/ 春紫苑
(7回)-(2007/09/22(Sat) 00:10:38)
皆様、アドバイスをありがとうございます。
IsSpecialName なのを省くことで、期待した動作を実現することができました。
Reflection に関しては知らないことが多いなと思いました。
勉強不足ですね、私。
ありがとうございました。
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-