Utility 로 쓰면 어떨까 해서올립니다.
첫 소스는 codeproject 에서 가져왔는데요
조금 조금씩 수정했습니다.
코드보시면 이걸 왜 이렇게 했을까... 라는 생각을 갖게 하는 부분들이 있습니다. ㅋㅋ
필요하신 부분 있으시면 수정해서 사용하시면 좋을 듯합니다.
이런 코드도 있드라 정도로 생각해 두시면... ^^
이런식으로 자신만의 함수들을 따로 만들어 놓으시면
자신만의 프래임웍 유틸리티를 만들수 있겠죠? ^^


Imports System
Imports System.Reflection

Public Class Null

' define application encoded null values
Public Shared ReadOnly Property NullShort() As Short
  Get
    Return -1
  End Get
End Property
Public Shared ReadOnly Property NullInteger() As Integer
  Get
    Return -1
  End Get
End Property
Public Shared ReadOnly Property NullSingle() As Single
  Get
    Return Single.MinValue
  End Get
End Property
Public Shared ReadOnly Property NullDouble() As Double
  Get
    Return Double.MinValue
  End Get
End Property
Public Shared ReadOnly Property NullDecimal() As Decimal
  Get
    Return Decimal.MinValue
  End Get
End Property
Public Shared ReadOnly Property NullDate() As Date
  Get
    Return Date.MinValue
  End Get
End Property
Public Shared ReadOnly Property NullString() As String
  Get
    Return ""
  End Get
End Property
Public Shared ReadOnly Property NullBoolean() As Boolean
  Get
    Return False
  End Get
End Property
Public Shared ReadOnly Property NullGuid() As Guid
  Get
    Return Guid.Empty
  End Get
End Property

' sets a field to an application encoded null value ( used in BLL layer )
Public Shared Function SetNull(ByVal objValue As Object, ByVal objField As Object) As Object
If IsDBNull(objValue) Then
  If TypeOf objField Is Short Then
    Return NullShort
  ElseIf TypeOf objField Is Integer Then
    Return NullInteger
  ElseIf TypeOf objField Is Single Then
    Return NullSingle
  ElseIf TypeOf objField Is Double Then
    Return NullDouble
  ElseIf TypeOf objField Is Decimal Then
    Return NullDecimal
  ElseIf TypeOf objField Is Date Then
    Return NullDate
  ElseIf TypeOf objField Is String Then
    Return NullString
  ElseIf TypeOf objField Is Boolean Then
    Return NullBoolean
  ElseIf TypeOf objField Is Guid Then
    Return NullGuid
  Else ' complex object
    Return Nothing
  End If
Else ' return value
  Return objValue
End If
End Function

' sets a field to an application encoded null value ( used in BLL layer )
Public Shared Function SetNull(ByVal objPropertyInfo As PropertyInfo) As Object
  Select Case objPropertyInfo.PropertyType.ToString
    Case "System.Int16"
      Return NullShort
    Case "System.Int32", "System.Int64"
      Return NullInteger
    Case "System.Single"
      Return NullSingle
    Case "System.Double"
      Return NullDouble
    Case "System.Decimal"
      Return NullDecimal
    Case "System.DateTime"
      Return NullDate
    Case "System.String", "System.Char"
      Return NullString
    Case "System.Boolean"
      Return NullBoolean
    Case "System.Guid"
      Return NullGuid
    Case Else
      ' Enumerations default to the first entry
      Dim pType As Type = objPropertyInfo.PropertyType
      If pType.BaseType.Equals(GetType(System.Enum)) Then
        Dim objEnumValues As System.Array = System.Enum.GetValues(pType)
        Array.Sort(objEnumValues)
        Return System.Enum.ToObject(pType, objEnumValues.GetValue(0))
      Else ' complex object
        Return Nothing
      End If
    End Select
End Function

' convert an application encoded null value to a database null value ( used in DAL )
Public Shared Function GetNull(ByVal objField As Object, ByVal objDBNull As Object) As Object
  GetNull = objField
  If objField Is Nothing Then
    Return objDBNull
  ElseIf TypeOf objField Is Short Then
    If Convert.ToInt16(objField) = NullShort Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Integer Then
    If Convert.ToInt32(objField) = NullInteger Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Single Then
    If Convert.ToSingle(objField) = NullSingle Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Double Then
    If Convert.ToDouble(objField) = NullDouble Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Decimal Then
    If Convert.ToDecimal(objField) = NullDecimal Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Date Then
' compare the Date part of the DateTime with the DatePart of the NullDate ( this avoids subtle time differences )
    If Convert.ToDateTime(objField).Date = NullDate.Date Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is String Then
    If objField Is Nothing Then
      Return objDBNull
    Else
      If objField.ToString = NullString Then
        Return objDBNull
      End If
    End If
  ElseIf TypeOf objField Is Boolean Then
    If Convert.ToBoolean(objField) = NullBoolean Then
      Return objDBNull
    End If
  ElseIf TypeOf objField Is Guid Then
    If CType(objField, System.Guid).Equals(NullGuid) Then
      Return objDBNull
    End If
  End If
End Function

' checks if a field contains an application encoded null value
Public Shared Function IsNull(ByVal objField As Object) As Boolean
  If Not objField Is Nothing Then
    If TypeOf objField Is Integer Then
      Return objField.Equals(NullInteger)
    ElseIf TypeOf objField Is Single Then
      Return objField.Equals(NullSingle)
    ElseIf TypeOf objField Is Double Then
      Return objField.Equals(NullDouble)
    ElseIf TypeOf objField Is Decimal Then
      Return objField.Equals(NullDecimal)
    ElseIf TypeOf objField Is Date Then
      Dim objDate As DateTime = CType(objField, DateTime)
      Return objDate.Date.Equals(NullDate.Date)
    ElseIf TypeOf objField Is String Then
      Return objField.Equals(NullString)
    ElseIf TypeOf objField Is Boolean Then
      Return objField.Equals(NullBoolean)
    ElseIf TypeOf objField Is Guid Then
      Return objField.Equals(NullGuid)
    Else ' complex object
      Return False
    End If
  Else
    Return True
  End If
End Function

End Class
반응형

'.NET > VB.NET' 카테고리의 다른 글

[VB.NET] Visual Basic 2005 Power Packs  (0) 2009.03.05
[VB.NET] VisualBasic.NET 키워드  (0) 2009.03.05
[VB.NET] 배열  (4) 2009.03.05
[VB.NET] 변수사용  (0) 2009.03.05
[VB.NET] As Customer와 As New Customer 의 차이...  (0) 2009.03.05

오늘은 4번에 이어 간단히 설명하려 합니다.

저번에 .NET Framework 까지 간단히 설명을 했었는데요.


오늘은
Enterprise Server군
Building Block Service
그리고 이모든것들을 통합해서 개발할 수 있는 VisualStudio

에 대해서.. 간략히 설명하기로 하죠...

Enterprise server 군은...
저번에도 잠시 설명했던 것과 같이

.NET 을 이야기 할때 항상 함께 이야기가 나오게 되는 JAVA.
같은? 개념의 VM을 사용하지만 많은 차이점을 느끼게 하는 요소중의 하나가 Server군입니다.

두 VM 의 가장큰 차이점은 JAVA 는 JAVA 만을 위한 VM 이지만 CLR 의 경우 여러 Laguage 에서 사용할 수 있는 VM 이라는 것이겠구요.
여러기능을 가지고 있는 서버군들이 .NET Service를 위해 .NET 을 포커스로 맞추고 개발되어지고 있고 .NET을 뒷받침하고 있습니다.

Building Block Service 는 쉽게 이야기 해서 이미 만들어진 서비스라고 보시면 될 것이구요 예를 든다고 하면 Passport service를 예로 들수 있을 것을 것입니다.
회원들의 인증에 대한 서비스를 제공하지요
이런 서비스들이 구축되어지고 사용하므로써 실제 환경에서 고객, 기업, 사용자들이 원하는 개발을 하게될때 유연?(만드는 사람에 따라서 다르긴 하겠지만..)하고 쉽고 빠른 개발을 할 수 있을 것이며 원하는 모델에 가까운 결과물이 나올 수있을 것입니다.

그리고 마지막으로 지금까지 열거한 사항들(.NET Framework, .NET Server, Block Service ) 모두를 하나의 IDE 내에서 접근 가능하도록 통합 하고 각각의 요소들을 개발하는데 쉽고 빠른 개발을 할 수 있도록 도와주는 Visual Studio 가 있다고 말씀드릴수 있을 것입니다.
이런 VS 가 짱이라는 거죠. ^^


오늘 너무 간단히 짚고 넘어갔나요?
지난시간에 걍 확 해버리는 건데...

다음에는 좀 여유를 가지고 이야기 해 나갈 수있도록 하겠습니다.
요즘 프로젝트에 투입이 되서... 쬐끔 바쁠라 그러거든요...

그래도 열심히 적어보도록 하겠습니다. 텀이 길어지면 "이눔이 빠졌네... " 라기 보다 "요즘 플젝하니라 바쁘구나" 라고 생각해주삼... ^^


오늘도 행복한 하루되시구요.

고수되세요... 그럼 꾸뻑..


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형




우리의 추박사, 전길...

간만에 만나서 너무 반가왔어요...




행복한 고수되세요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
반응형

+ Recent posts