- PR -

[VB.NET] Shared で Type オブジェクトの取得

投稿者投稿内容
ボア
ベテラン
会議室デビュー日: 2002/05/22
投稿数: 78
投稿日時: 2004-05-18 18:23
お世話になります。

Shared メソッドにおいて、自身の Type オブジェクトを取得することは
できるのでしょうか?
通常のインスタンスメソッドであれば、
Me.GetType()
で取れると思いますが、Shared の場合 Me がいないので。。

よろしくお願いします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-18 18:44
ボアさん、こんばんは。

vb.netですよね?
GetType 演算子が使えます。

コード:
Public Class Class1

    Public Function Func1() As System.Type
        Return Me.GetType()
    End Function

    Public Shared Function Func2() As System.Type
        Return GetType(Class1)
    End Function

End Class


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-19 08:26
引用:

きくちゃんさんの書き込み (2004-05-18 18:44) より:

GetType 演算子が使えます。


 Meというところから、「“クラスとしての自分”を表すキーワードはないか」、ということだと思ったのですが。例えば、「MyClass.GetType」(注:使えないですよ)みたいなキーワード、だと思ったのですが、違うのかな?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-05-19 09:30
Jittaさん、お早うございます。

引用:

 Meというところから、「“クラスとしての自分”を表すキーワードはないか」、とい


あ、単に「静的な呼出の中で呼び出される側の Type を(ベタでもいいから)扱いたい」という話ではなく、という事ですね。なるほど。

#でも、それが必要になる局面というのが思い浮かばない...。

【修正】
引用タグ書き損じ を修正。


[ メッセージ編集済み 編集者: きくちゃん 編集日時 2004-05-19 09:32 ]
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-05-19 10:38
Sharedということは、呼び出すクラスの名前は静的にコードに書かなければいけませんよね。
例えばMyClassなら
MyClass.xxx()
というように。

それなら初めから
GetType(MyClass)
と書けば良いのではないでしょうか。

Typeを取得する部分をメソッド呼び出し風に書きたい理由が何かあるんでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-05-19 11:12
引用:

一郎さんの書き込み (2004-05-19 10:38) より:

Typeを取得する部分をメソッド呼び出し風に書きたい理由が何かあるんでしょうか?


 例えば、

・クラス名を変更してもコードを直さなくてもよい
 →スケルトンコードに埋め込み、修正しなくてもよい

・別のファイルにメソッドを書いておいて、多くのクラスにコピー!!


なんてことを考えてみました。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-05-19 11:28
引用:

Jittaさんの書き込み (2004-05-19 11:12) より:
・クラス名を変更してもコードを直さなくてもよい
 →スケルトンコードに埋め込み、修正しなくてもよい

・別のファイルにメソッドを書いておいて、多くのクラスにコピー!!


こういう場合に、直接的にやる方法はなかったりしますので、
System.Reflection.MethodBase.GetCurrentMethod.DeclaringType
等とやったりします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-05-19 11:45
引用:

・別のファイルにメソッドを書いておいて、多くのクラスにコピー!!


は、むしろテンプレート作成の方が本筋かも……。
http://www.gotdotnet.com/japan/community/qa/qa200307.aspx

引用:

・クラス名を変更してもコードを直さなくてもよい
 →スケルトンコードに埋め込み、修正しなくてもよい


だと、たしかに「GetType(何かのキーワード)」で扱えると便利ですね。

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