2009-07-28 10 views
0

私はFileHelperを使ってオブジェクトのプロパティを生成しています。ここでは一つの特性の例である:.Net:nullまたは空の文字列のオブジェクトのプロパティを確認する良い方法はありますか?

<FieldOptional(), _ 
FieldTrim(TrimMode.Both)> _ 
<FieldNullValue(GetType(String), " ")> _ 
Public StoreNo As String 

あなたがビジネスポリシーの一つは、オブジェクトのStoreNoがある場合StoreNoが空か何であるかどうかを確認することです、StoreNo「は」価値を持っているか、するか見ることができるように空またはnullの場合、レコードは作成されません。

クラスのHasValueファンクションを作成して、オブジェクトのStoreNoやその他のプロパティをチェックすることはできますが、ハックのように感じます。

Public Function HasValue() As Boolean 

    Dim _HasValue As Boolean = True 

    If StringHelper.IsNullOrBlank(Me.StoreNo) Then 
     _HasValue = False 
    End If 

    Return _HasValue 
End Function 

私はこのアプローチが理想的な解決策ではないと思います。 StoreNoが他のものを削除または変更した場合はどうなりますか?オブジェクトのプロパティをチェックする最良の方法は何ですか?

答えて

3

String.IsNullOrEmpty()はどうですか?

おそらく、私が何かをしないのです、これはまた:)


単純すぎるようで、このようなコードを記述する必要はありません。

if String.IsNullOrEmpty(str) then 
    hasValue = false 
end 

あなたはすでにブール式を評価しています、

hasValue = Not String.IsNullOrEmpty(str) 
7

あなたの質問に完全には答えられませんが、 HasValue関数がひどく畳み込まれています。

Public Function HasValue() As Boolean 
    Return Not String.IsNullOrEmpty(Me.StoreNo); 
End Function 

しかしString.IsNullOrEmptyはBCLに存在する場合、なぜも、カスタム関数を気に:それはfolowingに簡素化されるだろうか?

+1

'String.IsNullOrEmpty'は "" のためにfalseを返します。トリミングされた文字列もチェックする必要があります。 –

+0

私はいくつかのプロパティをチェックしたいと思います。これはサンプルコードです。 – Jack

+1

@Mehrdad:それは本当ですが、単一のスペース*が有効な値ではない場合に限ってです。それは大部分のケースをカバーしていますが、必ずしもそうではありません。 –

2

String.IsNullOrEmpty関数を使用して文字列をテストできます。

EDIT

私はあなたが前より広範な質問をしていることを逃しました。あなたが望むものが、複数のプロパティをチェックして同じタイプの異なるオブジェクトに適用できる一般的なタイプのチェックである場合は、拡張メソッドを検討することができます。例えば、

これは、文字列変数のIsValidStoreNumberをその文字列のメソッドであるかのように呼び出すことができます。たとえば:

string test = "Some Value"; 
if (test.IsValidStoreNumber()) 
{ 
    // handle case where it is a good store number. 
} 
else 
{ 
    // handle case where it is not a good store number. 
} 

希望これはCODE

のVBバージョンを追加する

EDITより有用な答えですが、私はあなたの元の質問は、VBのコードを使用したとき、私はC#のコードを示して実現しました。ここに私の拡張メソッドの例のVB版があります。

Imports System.Runtime.CompilerServices 

Module VariousTests 
    <Extension()> _ 
    Public Function IsValidStoreNumber (ByVal value As String) as Boolean 
    If string.IsNullOrEmpty(value) Then 
     Return False; 
    End If 

    ' Put additional checks here. 
    End Sub 
End Module 

使用するには:

Imports VariousTests 

Then inside a method : 

    Dim test as string = "Some Value"; 
    If test.IsValidStoreNumber() Then 
     // handle case where it is a good store number. 
    Else 
     // handle case where it is not a good store number. 
    End IF 
+0

+1拡張メソッド。 –

関連する問題