我正在使用FileHelper来生成对象的属性。以下是一个属性的示例:
<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被移除或更改为其他内容,该怎么办?检查对象属性的最佳方法是什么?
答案 0 :(得分:7)
不确定它是否完全回答了您的问题,但您的HasValue
功能非常令人费解。它可以简化为以下内容:
Public Function HasValue() As Boolean
Return Not String.IsNullOrEmpty(Me.StoreNo);
End Function
但是,当BCL中存在String.IsNullOrEmpty
时,为什么还要打扰自定义函数?
答案 1 :(得分:3)
String.IsNullOrEmpty()怎么样?
也许我错过了一些东西,这看起来太简单了:)
此外,没有理由编写这样的代码:
if String.IsNullOrEmpty( str ) then
hasValue = false
end
您已经在评估布尔表达式,因此只需直接指定事物:
hasValue = Not String.IsNullOrEmpty( str )
答案 2 :(得分:2)
您可以使用String.IsNullOrEmpty函数来测试您的字符串。
修改强>
我错过了你之前提出更广泛的问题。如果您想要的是一种通用类型的检查,可以检查多个属性并应用于相同类型的不同对象,您可能需要考虑扩展方法。例如
public static class VariousTests
{
public static bool IsValidStoreNumber (this string value)
{
if (string.IsNullOrEmpty(value)) return false;
// Put additional checks here.
}
}
Note that both the class and method are declared as static.
Note also the use of "this" in the method's parameter list, followed by the
object type the method applies to.
这可以让你在任何字符串变量上调用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.
}
希望这是一个更有帮助的答案
编辑添加VB版本代码
当我的原始问题使用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