- PR -

VB.NET クラスで条件によりメソッド、プロパティを有効にしたり無効にしたい

1
投稿者投稿内容
うめ
会議室デビュー日: 2003/07/01
投稿数: 13
お住まい・勤務地: 関西地区
投稿日時: 2004-02-23 11:03
いつも拝見させていただいてます。さっそくですが、
クラスを作成しているのですが、条件によりメソッド、プロパティを
有効(入力候補に出る)にしたり、無効(入力候補には出ない)にしたりする
ことってできるでしょうか?

以下がサンプルソースです。

クラスの初期化(コンストラクト)で区分を取得しています。
  ・区分="a"の時
     プロパティA、メソッドAprocのみを有効にする
  ・区分="b"の時
     プロパティB、メソッドBprocのみを有効にする
以上ですが、よろしくお願いいたします。

-------------------ソース-----------------------
Public Class Test
  
  Private m_Kbn as String
  Public Sub New(ByVal KBN As String)
    m_Kbn=KBN
End Sub
  'Aプロパティ
  Public ReadOnly Property A() As String
    Get
      '区分が"a"のときのみ当プロパティを有効にしたい
      Return "A"
    End Get
  End Property
  'Bプロパティ
  Public ReadOnly Property B() As String
    Get
      '区分が"b"のときのみ当プロパティを有効にしたい
      Return "B"
    End Get
  End Property
  'Aメソッド
  Public Function Aproc() As Integer
    '区分が"a"のときのみ当メソッドを有効にしたい
    Return 1
  End Function
  'Bメソッド
  Public Function Bproc() As Integer
    '区分が"b"のときのみ当メソッドを有効にしたい
    Return 2
  End Function

End Class

[ メッセージ編集済み 編集者: うめ 編集日時 2004-02-23 11:11 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-23 11:12
 普通、内部で割当先、取得元を切り替えるように作りますけど?

class AAA
private pAtClassA
private pAtClassB
private pKubun

public property ClassValue
get
if pKubun = "A" then
return pAtClassA
elseif pKubun = "B" then
return pAtClassB
else
throw new exception
end if
end get



「使う側に混乱させない」のが、作る側の責任ではないでしょうか。設定によって候補で出てきたりで来なかったりすると、混乱すると思います。また、コーディングした後に設定を変更した場合、どうなるのでしょう?
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-02-23 11:31
引用:

うめさんの書き込み (2004-02-23 11:03) より:
いつも拝見させていただいてます。さっそくですが、
クラスを作成しているのですが、条件によりメソッド、プロパティを
有効(入力候補に出る)にしたり、無効(入力候補には出ない)にしたりする
ことってできるでしょうか?

以下がサンプルソースです。

クラスの初期化(コンストラクト)で区分を取得しています。


いや、コンストラクタが実行されるのは実行時(デザイナでのフォームの表示とかはとりあえず置いとくとして)で、メソッドの候補を表示するのはコーディング時なのですから、因果関係(というかタイミング)が逆になるわけですから…

実行時にメソッドを無効にしたいということなら、例外にしていいのであればInvalidOperationExceptionでも投げとけばいいかと思いますが…

まあ、なんらかの事情があるのかもしれませんが、Jittaさんの仰ることの方を気にした方がいいと思います。
うめ
会議室デビュー日: 2003/07/01
投稿数: 13
お住まい・勤務地: 関西地区
投稿日時: 2004-02-23 11:42
なちゃさん、Jittaさん。
ご指摘ありがとうございます。
クラスの勉強不足で申し訳ありません。
大変参考になりました。
1

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