2014-10-22 3 views
1

최근에 맞춤 클래스로 많은 작업을 해오 고 있으며 내가 가지고있는 능력을 사랑하지만 해결할 수없는 것을 발견했습니다. 온라인으로 도움이되는 어떤 것.다양한 수의 속성 값을 사용하여 클래스 객체를 인스턴스화하는 방법

데이터베이스에서 가져온 정보 만 저장하려는 속성이있는 클래스 목록이 있습니다.

Public Class CustomClass 

     Public _Values As String 
     Public _Variables As String 


     Public ReadOnly Property Values() As String 
      Get 
       Return _Values 
      End Get 
     End Property 

     Public ReadOnly Property Variables() As String 
      Get 
       Return _Variables 
      End Get 
     End Property 

     Sub New(ByVal values As String, ByVal variables As String) 
      _Values = values 
      _Variables = variables 
     End Sub 
End Class 

좀 데이터베이스 항목을 반복한다, 나는 내가 그들을 쳤을 때 나는 즉시 사용 가능한 모든이없는 때문에 내 문제의 일부입니다 (해당 재산에 저장할 찾고 있어요). 한 번에 값이나 변수를 추가 할 수 있고 둘 다 추가 할 수 없지만 두 개의 인수를 전달하는 새 프로 시저 'New'가 있으므로 항상 두 개를 모두 전달해야합니다. 이 문제를 해결할 올바른 방법이라고 생각하지 않는 선택적 필드를 사용하여이 문제를 해결할 수있는 유일한 방법을 찾았습니다. 클래스를 사용하여 가능한 것을 찾고 있습니까? 아니면 구조를 사용하면 더 간단할까요?

+1

잘 모르겠습니다. 객체를 생성하기위한 충분한 정보를 얻지 못하면 객체 생성을 연기하십시오. 로컬 변수 (또는 필드)에 속성을 저장 한 다음 두 개체가 모두 새 개체를 생성하자마자 속성을 저장합니다. 네가 묻고있는거야? –

+0

필자의 원래 계획은 쉼표 (',')로 구분 된 테이블 항목을 가져 와서 목록으로 나눈 다음 반복하여이 속성 목록에 추가하여 별도로 추가하지 못하게했습니다 네가 말했듯이, 임시 변수에 넣지 않는 한. 만약 내가 그 경로를 가야한다면, 나는 거대한 거래가 아닌 여러 개의 'holding'변수를 만들어야 할 것이다. 그러나 분할 된 값을 가지고있는 변수만으로 처리 할 수 ​​있다면, 가독성에 도움이 될 것이라고 생각했다. – Criel

+1

그냥 의견 : 필드는 비공개이어야합니다. (예를 들어, 'Private _Values ​​As String') –

답변

1

당신은 생성자를 오버로드 할 수 있습니다. serializers, Collection editor 등은 매개 변수화 된 생성자를 사용하는 방법을 모르고 간단한 매개 변수가 필요할 것입니다. 매개 변수가없는 간단한 생성자가 필요합니다. 앱에서 규칙에 MyFoo에 대한 이유가 없다고한다면

지금까지 모두 NameValue하지 않는 경우에만 New(String, Integer)의 ctor를 구현, 정의 된 규칙을 적용하고 존재한다. 즉, 앱 규칙에 관한 것이고, 그런 다음 코딩 편의에 관한 것입니다.

Dim myFoo As New Foo   ' empty one 
myFoo.Name = "ziggy"   ' we only know part of it 
0

문자열의 기본값은 아무 것도 아니므로없는 값에 대해서는 아무 것도 전달할 수 없습니다. IE

모든 유형에는 기본값이 있기 때문에 단순한 문자열 이상으로 작동합니다. 전체 초기화, 부분 (이름 만) 또는 빈 객체로 :

Friend Class Foo 
    ' using auto-implement props: 
    Public Property Name As String  ' creates a _Name backing field 
    Public Property Value as Integer 

    Public Sub New(newN as String, newV as Integer) 
     ' access "hidden" backing fields if you want: 
     _Name = newN 
     _Value = newV 
    End Sub 

    Public Sub New()   ' simple ctor 
    End Sub 

    Public Sub New(justName As String) 
     ' via the prop 
     Name = justName 
    End Sub 
End Class 

이제 객체를 생성하는 3 가지 방법이 있습니다

관련 문제