- PR -

検索結果のエラー表示について【初歩的質問】

1
投稿者投稿内容
BBSハンドル
会議室デビュー日: 2008/08/12
投稿数: 7
投稿日時: 2008-08-18 15:20
[環境:WindowsXP]
[言語:VB.NET]


初歩的な質問です。
下記のように書き込みのみのプロパティを用意し、

Public WriteOnly Property MessageManager() As MessageManager
Set(ByVal Value As MessageManager)
Me.m_messageManager = Value
End Set
End Property

データの検索結果が上限値を超えた場合、検索条件をもっと絞り込むように促すメッセージを表示するように試みております。

If ((list.Count >= DatabaseManager.FindMaxFetchSize) AndAlso (controller.Count(condition) > DatabaseManager.FindMaxFetchSize)) Then
MessageManager.Show("検索結果が上限値を超えました。条件を絞り込んで下さい。", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If


しかし、ビルドエラータスクに【プロパティ 'MessageManager' は 'WriteOnly' です。】と表示されコンパイルが通りません。
初歩的な内容で申し訳ございませんが、どなたか教えて頂けませんでしょうか。
よろしくお願い致します。

burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2008-08-18 16:04
そもそもなぜMessageManagerプロパティはWriteOnlyにしたのでしょう?
WriteOnlyの意味を理解してますか?
Toshi
ベテラン
会議室デビュー日: 2007/09/18
投稿数: 68
お住まい・勤務地: 関東のどっか
投稿日時: 2008-08-18 16:29
こんにちわ

クラス関係と役割がわからないとなんともいえないのですが、

コード:
If ((list.Count >= DatabaseManager.FindMaxFetchSize) AndAlso (controller.Count(condition) > DatabaseManager.FindMaxFetchSize)) Then 
MessageManager.Show("検索結果が上限値を超えました。条件を絞り込んで下さい。", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 
End If 


このコードはどこから呼ぶのでしょうか?
プロパティ経由で利用する必要があるのでしょうか?
コード:
MessageManager.Show("検索結果が上限値を超えました。条件を絞り込んで下さい。", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 


ここで、MessageManagerを取得(get)しているために、エラーは発生しています。
このコード、実はこうでは?

コード:
Me.m_messageManager.Show("検索結果が上限値を超えました。条件を絞り込んで下さい。", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-08-18 16:44
引用:

BBSハンドルさんの書き込み (2008-08-18 15:20) より:

しかし、ビルドエラータスクに【プロパティ 'MessageManager' は 'WriteOnly' です。】と表示されコンパイルが通りません。


そのままです。 書き込み専用 (WriteOnly) プロパティになっているので読み込み (Read) ができません。 Setter だけでなく Getter を定義するべきだと思います。 というより書き込み専用プロパティは普通は使わないですね。 (書き込みできるなら参照ができてもさして害でない)。 書き込みのみであれば Set から始まるメソッドにしているパターンが多いと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
BBSハンドル
会議室デビュー日: 2008/08/12
投稿数: 7
投稿日時: 2008-08-18 17:36
回答頂いた皆様ありがとうございました。
特にWriteOnlyにする必要もありませんでしたので、
Setter/Getterを設定することでコンパイルエラーを回避することができました。
1

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