객체가 아닌 객체 인터페이스 배열을 반환 할 수 있습니까?
-
03-07-2019 - |
문제
내 응용 프로그램에 특수 목록을 설명하는 인터페이스가 있습니다 ...
Public Interface IAlphabeticListItem
Property StartingLetter() As String
Property DetailsList() As Generic.List(Of DetailsData)
End Interface
여러 개체는이 인터페이스를 구현하지만 기본 객체가 아니라 인터페이스로 웹 서비스에서 반환하고 싶습니다.
<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)
...
End Function
안타깝게도 이것은 예외를 유발합니다
인터페이스 ialphabeticlistime을 일련화 할 수 없습니다.
예외 세부 사항 : System.NotSupportedException : 인터페이스 IalPhabeticlistem을 일련의 시리얼 화 할 수 없습니다.
인터페이스 직렬화를 가능하게하는 방법이 있습니까, 아니면 각 객체를 인터페이스를 구현하는 콘크리트 클래스로 변환 한 다음 해당 클래스를 반환해야합니까?
해결책
예 그리고 아니오. 지원되지 않기 때문에 XML 직렬화에 대한 일반 클래스를 직접 노출시킬 수 없습니다. 그러나 동일한 컬렉션에 비 게 릭 인터페이스를 노출시키고 직렬화 할 수 있습니다. 이 블로그는이 작업을 만드는 방법에 대해 자세히 설명합니다.
다른 팁
지금 당장 테스트 할 시간이 없지만 C#에서는 인터페이스를 확장 할 수 있으므로 vb.net에서이를 수행 할 수 있다고 가정합니다.
Ialphabeticlistem을 확장 할 수있게하십시오
제휴하지 않습니다 StackOverflow