액세스 가능한 모든 오버로드에 인수가 필요하므로 개체 이니셜라이저 식에서 '<propertyname>' 속성을 초기화할 수 없습니다.
업데이트: 2007년 11월
Property '<propertyname>' cannot be initialized in an object initializer expression because all accessible overloads require arguments
개체 이니셜라이저 목록에 초기화된 멤버는 필드 또는 속성이어야 합니다. 또한 이니셜라이저 목록에 있는 속성에는 매개 변수가 포함될 수 없습니다. 이 오류를 발생시키는 속성은 오버로드되며 해당 속성의 각 버전에는 인수가 필요합니다. 따라서 속성은 개체 이니셜라이저 목록에서 초기화할 수 없습니다.
오류 ID: BC30993
이 오류를 해결하려면
- 인수를 필요로 하는 속성을 이니셜라이저 목록에서 제거합니다.
예제
다음 클래스에는 세 개의 속성 정의가 포함되어 있는데 한 개는 TotalItems에 대한 속성 정의이며 다른 두 개는 오버로드된 Item에 대한 속성 정의입니다.
Class CollectionOfItems
Property TotalItems() As Integer
Get
End Get
Set(ByVal value As Integer)
End Set
End Property
Property Item(ByVal Key As String) As Object
Get
End Get
Set(ByVal value As Object)
End Set
End Property
Property Item(ByVal Index As Integer) As Object
Get
End Get
Set(ByVal value As Object)
End Set
End Property
End Class
TotalItems 속성에는 인수가 필요 없기 때문에 다음 선언에서와 같이 개체 이니셜라이저 목록에서 초기화할 수 있습니다.
Dim coinCollection As New CollectionOfItems With { .TotalItems = 0 }
Item 속성은 오버로드되며 각 오버로드에는 인수가 필요합니다. 따라서 Item은 개체 이니셜라이저 목록에 나타날 수 없습니다.
' The following declaration is not valid.
' Dim coinCollection As New CollectionOfItems With { .TotalItems = 0, _
' .Item = aCoinObject }
이 오류를 방지하려면 개체 이니셜라이저 외부에서 Item 속성을 초기화합니다.
Dim coinCollection As New CollectionOfItems With { .TotalItems = 0 }
coinCollection.Item(1) = aCoinObject